#include <fstream>
#define IN "datorii.in"
#define OUT "datorii.out"
#define NMAX 15005
using namespace std;
ifstream in(IN);
ofstream out(OUT);
int n, m, v[NMAX], arbore[4*NMAX], suma;
inline void creare(int nn, int st, int dr)
{
if(st==dr)
arbore[nn]=v[st];
else
{
int mijl=(st+dr)/2;
creare(2*nn, st, mijl);
creare(2*nn+1, mijl+1, dr);
arbore[nn]=arbore[2*nn]+arbore[2*nn+1];
}
}
inline void actualizare(int nn, int st, int dr, int zi, int val)
{
if(st==dr)
arbore[nn]-=val;
else
{
int mijl=(st+dr)/2;
if(zi<=mijl)
actualizare(2*nn, st, mijl, zi, val);
else
actualizare(2*nn+1, mijl+1, dr, zi, val);
arbore[nn]=arbore[2*nn]+arbore[2*nn+1];
}
}
inline void verifica(int nn, int st, int dr, int a, int b)
{
if(a<=st && b>=dr)
suma+=arbore[nn];
else
{
int mijl=(st+dr)/2;
if(a<=mijl)
verifica(2*nn, st, mijl, a, b);
if(mijl<b)
verifica(2*nn+1, mijl+1, dr, a, b);
}
}
int main()
{
int i, a, b, cod;
in>>n>>m;
for(i=1; i<=n; ++i)
{
in>>v[i];
actualizare(1, 1, n, i, -v[i]);
}
//creare(1, 1, n);
while(m--)
{
in>>cod>>a>>b;
if(!cod)
actualizare(1, 1, n, a, b);
else
{
suma=0;
verifica(1, 1, n, a, b);
out<<suma<<'\n';
}
}
in.close();
out.close();
return 0;
}