#include<stdio.h>
int v[60005],x,a,b,poz,sol,n,k,i,q;
int maxi(int aa, int bb)
{
if(aa>bb)
return aa;
return bb;
}
void update(int st, int dr , int nod)
{
if(st==dr)
v[nod]+=x;
else
{
int mij=(st+dr)/2;
if(poz<=mij)
update(st,mij,2*nod);
else
update(mij+1,dr,2*nod+1);
v[nod]=v[2*nod]+v[2*nod+1];
}
}
int querry( int st, int dr , int nod)
{
if(st>=a&&dr<=b)
sol+=v[nod];
else
{
int mij=(st+dr)/2;
if(a<=mij)
querry(st,mij,2*nod);
if(mij<b)
querry(mij+1,dr,2*nod+1);
}
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{
poz=i;
scanf("%d",&x);
update(1,n,1);
}
for(i=1;i<=k;i++)
{
scanf("%d",&q);
if(q==0)
{
scanf("%d %d",&a,&b);
poz=a;
x=-b;
update(1,n,1);
}
else
{
sol=0;
scanf("%d%d",&a,&b);
querry(1,n,1);
printf("%d\n",sol);
}
}
return 0;
}