#include<stdio.h>
int a[80000],n,m,i,sum;
void update(int nod,int l,int r,int poz,int val)
{
if(l==r)
a[nod]-=val;
else {
int mij=(l+r)/2;
if(mij>=poz)
update(2*nod,l,mij,poz,val);
if(mij<poz)
update(2*nod+1,mij+1,r,poz,val);
a[nod]=a[2*nod]+a[2*nod+1];
}
}
void query(int nod,int l, int r,int st,int fin)
{ if(fin>=r&&st<=l)
sum+=a[nod];
else{ int mij=(l+r)/2;
if(st<=mij)
query(2*nod,l,mij,st,fin);
if(mij<fin)
query(2*nod+1,mij+1,r,st,fin);
}
}
int main()
{ freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{ int x;
scanf("%d",&x);
update(1,1,n,i,-x);
}
for(i=1;i<=m;i++)
{ sum=0;
int q,w,e;
scanf("%d%d%d",&q,&w,&e);
if(q==0)
update(1,1,n,w,e);
if(q==1)
{ query(1,1,n,w,e);
printf("%d\n",sum);
}
}
return 0;}