#include <stdio.h>
FILE *in=fopen("datorii.in","r"),*out=fopen("datorii.out","w");
#define dim 15001
int n,m,maxarb[4*dim+66],start,finish,val,pos,suma;
void update(int nod,int left, int right){
// fprintf(out,"(%d,%d)",left,right);
if(left==right){
maxarb[nod]+=val;
return;
}
int div=(left+right)/2;
if(pos<=div)update(nod*2,left,div);
else update(nod*2+1,div+1,right);
maxarb[nod]=maxarb[nod*2]+maxarb[nod*2+1];
// fprintf(out,"||S=%d=(%d,%d)+(%d,%d)",maxarb[nod],left,div,div+1,right);
}
void query(int nod,int left,int right){
// fprintf(out,"(%d,%d)",left,right);
if(start<=left&&right<=finish){
suma+=maxarb[nod];
//fprintf(out,"(%d,%d)",left,right);
return;
}
int div=(left+right)/2;
if(start<=div)query(nod*2,left,div);
if(div<finish)query(nod*2+1,div+1,right);
//fprintf(out,"||S=%d=(%d,%d)+(%d,%d)",maxarb[nod],left,div,div+1,right);
}
void solve(){
int x,a,b,i;
fscanf(in,"%d%d",&n,&m);
for(i=1;i<=n;i++){
fscanf(in,"%d",&x);
//fprintf(out,"\n<%d_ %d>",i,x);
pos=i,val=x;
update(1,1,n);
}
for(i=1;i<=m;i++){
fscanf(in,"%d%d%d",&x,&a,&b);
if(x){
suma=0;
start=a;
finish=b;
query(1,1,n);
fprintf(out,"%d\n",suma);
}
else{
pos=a;
val=b*(-1);
update(1,1,n);
}
}
}
int main(){
solve();
fclose(in);
fclose(out);
return 0;
}