#include<cstdio>
int n,m,i,j,v[400100],op,p,x,a,b,s;
FILE *f,*g;
void upd(int nod,int l,int r,int p,int x){
if(l==r){
v[nod]+=x;
return;
}
int mid=(l+r)/2;
if(p<=mid)
upd(2*nod,l,mid,p,x);
if(p>mid)
upd(2*nod+1,mid+1,r,p,x);
v[nod]=v[2*nod]+v[2*nod+1];
}
void query(int nod,int l,int r,int a,int b){
if(a<=l&&r<=b){
s+=v[nod];
return;
}
int mid=(l+r)/2;
if(a<=mid){
query(2*nod,l,mid,a,b);
}
if(b>mid){
query(2*nod+1,mid+1,r,a,b);
}
}
int main(){
f=fopen("datorii.in","r");
g=fopen("datorii.out","w");
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;i++){
fscanf(f,"%d",&x);
upd(1,1,n,i,x);
}
for(i=1;i<=m;i++){
fscanf(f,"%d",&op);
if(op==0){
fscanf(f,"%d%d",&p,&x);
upd(1,1,n,p,-x);
}
else{
s=0;
fscanf(f,"%d%d",&a,&b);
query(1,1,n,a,b);
fprintf(g,"%d\n",s);
}
}
fclose(f);
fclose(g);
return 0;
}