#include <bits/stdc++.h>
#define nmax 32768
using namespace std;
FILE *fin=fopen("datorii.in","r");
FILE *fout=fopen("datorii.out","w");
int arbore[nmax],interogari,n;
void afisare()
{
for(int i=1;i<=2*n+1;i++)
cout << arbore[i] << " ";
cout << endl;
}
void update(int nod_curent,int pozitie,int valoare,int st,int dr)
{
if(st==dr)
{
arbore[nod_curent]+=valoare;
}
else
{
int mijloc=(st+dr)/2;
if(pozitie<=mijloc)
{
update(nod_curent*2,pozitie,valoare,st,mijloc);
}
else if(pozitie>mijloc)
{
update(nod_curent*2+1,pozitie,valoare,mijloc+1,dr);
}
arbore[nod_curent]=arbore[nod_curent*2]+arbore[nod_curent*2+1];
}
}
int query(int nod_curent,int a,int b,int st,int dr)
{
if(a<=st&&dr<=b)
{
return arbore[nod_curent];
}
else
{
int mijloc=(st+dr)/2;
int val1=0,val2=0;
if(a<=mijloc)
{
val1=query(nod_curent*2,a,b,st,mijloc);
}
if(b>mijloc)
{
val2=query(nod_curent*2+1,a,b,mijloc+1,dr);
}
return val1+val2;
}
}
int main()
{
int cerinta,element,a,b;
fscanf(fin,"%d %d",&n,&interogari);
for(int i=1;i<=n;i++)
{
fscanf(fin,"%d",&element);
update(1,i,element,1,n);
}
// afisare();
for(int i=1;i<=interogari;i++)
{
fscanf(fin,"%d %d %d",&cerinta,&a,&b);
if(cerinta==0)
{
b=-b;
update(1,a,b,1,n);
// afisare();
}
else
{
element=query(1,a,b,1,n);
fprintf(fout,"%d\n",element);
}
}
fclose(fin);
fclose(fout);
return 0;
}