#include<cstdio>
#define nmax 15005
int arb[4*nmax+50],val,start,finish,pos,x;
void update_minus(int nod,int left,int right){
if(left == right){
arb[nod]-=x;
return ;
}
int div=(left+right)/2;
if(pos<=div)update_minus(2*nod,left,div);
else update_minus(2*nod+1,div+1,right);
arb[nod]-=x;
}
void update_plus(int nod,int left,int right){
if(left == right){
arb[nod]+=x;
return ;
}
int div=(left+right)/2;
if(pos<=div)update_plus(2*nod,left,div);
else update_plus(2*nod+1,div+1,right);
arb[nod]+=x;
}
void query(int nod,int left,int right){
if(start<=left && right<=finish){
val+=arb[nod];
return ;
}
int div=(left+right)/2;
if(start<=div)query(2*nod,left,div);
if(div<finish)query(2*nod+1,div+1,right);
}
int main(void){
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
int n,m,i;
scanf("%d %d\n",&n,&m);
for(i=1;i<=n;++i){
scanf("%d ",&x);
pos=i;
update_plus(1,1,n);
}
while(m--){
scanf("%d %d %d\n",&x,&start,&finish);
if(x){
val=0;
query(1,1,n);
printf("%d\n",val);
}
else{
pos=start; x=finish;
update_minus(1,1,n);
}
}
return 0;
}