#include<stdio.h>
int type,sol,x,y,i,j,n,m,H[30009];
void update(int nod,int st,int dr,int poz,int x)
{
int m=(st+dr)/2;;
if (st==dr)
{
H[nod]-=x;
return;
}
if (poz<=m) update(nod<<1,st,m,poz,x);
else update((nod<<1)+1,m+1,dr,poz,x);
H[nod]=H[(nod<<1)]+H[(nod<<1)+1];
}
void querry(int nod,int st,int dr,int a,int b)
{
int m=(st+dr)/2;;
if (a<=st&&dr<=b)
{
sol+=H[nod];
return;
}
if (a<=m) querry(nod<<1,st,m,a,b);
if (b>m) querry((nod<<1)+1,m+1,dr,a,b);
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1;i<=n;i++)
{
scanf("%d",&x);
update(1,1,n,i,-x);
}
for (i=1;i<=m;i++)
{
scanf("%d%d%d",&type,&x,&y);
if (type==0) update(1,1,n,x,y);
else
{
sol=0;
querry(1,1,n,x,y);
printf("%d\n",sol);
}
}
}