//#include<stdio.h>
#include<fstream.h>
ifstream in("datorii.in");
ofstream out("datorii.out");
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);
in>>n>>m;
for (i=1;i<=n;i++)
{
//scanf("%d",&x);
in>>x;
update(1,1,n,i,-x);
}
for (i=1;i<=m;i++)
{
//scanf("%d%d%d",&type,&x,&y);
in>>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);
out<<sol<<"\n";
}
}
}