#include <stdio.h>
#include <stdlib.h>
#define fin "datorii.in"
#define fout "datorii.out"
#define N 15010
int pos,val,start,finish;
int sum;
int arb[5*N];
int n,m;
void update(int nod,int l,int r){
int mid;
if (l==r){
arb[nod]-=val;
return;
}
mid=(l+r)/2;
if (pos<=mid) update(2*nod,l,mid);
else update(2*nod+1,mid+1,r);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
void querry(int nod,int l,int r){
int mid;
if (start<=l && r<=finish){
sum+=arb[nod];
return;
}
mid=(l+r)/2;
if (start<=mid)
querry(2*nod,l,mid);
if (mid<finish)
querry(2*nod+1,mid+1,r);
}
int main(void){
int i;
int v[N],a,b,tip;
freopen(fin,"r",stdin);
freopen(fout,"w",stdout);
scanf("%d%d",&n,&m);
for (i=1;i<=n;++i){
scanf("%d",&v[i]);
pos=i;
val=-v[i];
update(1,1,n);
}
for (i=1;i<=m;++i){
scanf("%d%d%d",&tip,&a,&b);
if (tip==1){
sum=0;
start=a;finish=b;
querry(1,1,n);
printf("%d\n",sum);
}
else if (tip==0){
pos=a;
val=b;
update(1,1,n);
}
}
return 0;
}