#include <cstdio>
#define MAXN 15000
int aint[4*MAXN+1];
void update(int nod,int left,int right,int poz,int val){
if(left==right)
aint[nod]+=val;
else{
int med=(left+right)/2;
if(poz<=med)
update(2*nod,left,med,poz,val);
else
update(2*nod+1,med+1,right,poz,val);
aint[nod]=aint[2*nod]+aint[2*nod+1];
}
}
int ans;
void query(int nod,int left,int right,int l,int r){
if(l<=left&&right<=r)
ans+=aint[nod];
else{
int med=(left+right)/2;
if(l<=med)
query(2*nod,left,med,l,r);
if(med<r)
query(2*nod+1,med+1,right,l,r);
}
}
int main(){
FILE*fi,*fout;
int i,n,m,t,x,y;
fi=fopen("datorii.in" ,"r");
fout=fopen("datorii.out" ,"w");
fscanf(fi,"%d %d " ,&n,&m);
for(i=1;i<=n;i++){
fscanf(fi,"%d" ,&x);
update(1,1,n,i,x);
}
while(m>0){
m--;
fscanf(fi,"%d %d %d " ,&t,&x,&y);
if(t==0)
update(1,1,n,x,-y);
else{
ans=0;
query(1,1,n,x,y);
fprintf(fout,"%d\n" ,ans);
}
}
fclose(fi);
fclose(fout);
return 0;
}