#include <stdio.h>
int N,arb[100001],x,M,T,op,sum;
void update(int,int,int,int);
void query(int,int,int);
int main()
{
int i;
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,N,i,1);
}
for(i=1;i<=M;++i)
{
scanf("%d",&op);
if(op==0)
{
scanf("%d%d",&T,&x);
x=-x;
update(1,N,T,1);
}
else
{
scanf("%d%d",&T,&x);
sum=0;
query(1,N,1);
printf("%d\n",sum);
}
}
return 0;
}
void update(int st, int dr, int i, int pas)
{
int mij;
mij=(st+dr)/2;
if(st==dr)
arb[pas]+=x;
else
{
arb[pas]+=x;
if(i<=mij)
update(st,mij,i,pas*2);
else
update(mij+1,dr,i,pas*2+1);
}
}
void query(int st, int dr, int pas)
{
int mij;
if(st>=T&&dr<=x)
sum+=arb[pas];
else
{
mij=(st+dr)/2;
if(T<=mij)
query(st,mij,pas*2);
if(x>mij)
query(mij+1,dr,pas*2+1);
}
}