#include <stdio.h>
#define MAX 100000
int v[MAX];
int aint[4 * MAX];
int lLim, rLim;
void build(int l, int r, int loc){
int lSon, rSon, mid;
if(l==r){
aint[loc]=v[l];
return;
}
mid=(l+r)/2;
lSon=loc+1;
rSon=loc+2*(mid-l+1);
build(l, mid, lSon);
build(mid + 1, r, rSon);
aint[loc]=aint[lSon]+aint[rSon];
}
int calcm(int l, int r, int loc) {
int lsum, rsum, lSon, rSon, mid;
if( lLim<=l && r<=rLim){
return aint[loc];
}
mid=(l+r)/2;
lSon=loc+1;
rSon=loc+2*(mid-l+1);
lsum=rsum=0;
if(lLim<=mid){
lsum=calcm(l,mid,lSon);
}
if(rLim>mid){
rsum=calcm(mid+1,r,rSon);
}
return rsum+lsum;
}
void update(int pos, int val, int loc, int l, int r){
int lSon, rSon, mid;
if(l==r){
aint[loc]-=val;
return;
}
mid=(l+r)/2;
lSon=loc+1;
rSon=loc+2*(mid-l+1);
if(mid>=pos)
update(pos,val,lSon,l,mid);
else
update(pos,val,rSon,mid+1,r);
aint[loc]=aint[lSon]+aint[rSon];
}
int main() {
FILE *fin,*fout;
fin=fopen("datorii.in","r");
fout=fopen("datorii.out","w");
int n, m, q, a, b, i;
fscanf(fin,"%d%d",&n,&m);
for(i=0;i<n;i++)
fscanf(fin,"%d",&v[i]);
build(0,n-1,0);
while(m--){
fscanf(fin,"%d%d%d",&q,&a,&b);
a--;
if(q==1){
b--;
lLim=a;
rLim=b;
fprintf(fout,"%d\n",calcm(0,n-1,0));
}else{
v[a]-=b;
update(a,b,0,0,n-1);
}
}
fclose(fin);
fclose(fout);
return 0;
}