#include <cstdio>
#define MaxN 15050
#define fs(x) ((x)*2)
#define fd(x) ((x)*2+1)
int N,M,arb[4*MaxN],pos,val,i,op,a,b,S;
void Update(int nod,int st,int dr)
{
if(st==dr)
{
arb[nod]+=val;
return;
}
int div=(st+dr)/2;
if(pos<=div)
Update(fs(nod),st,div);
else
Update(fd(nod),div+1,dr);
arb[nod]=arb[fs(nod)]+arb[fd(nod)];
}
void Query(int nod,int st,int dr)
{
if(st>=a && dr<=b)
{
S+=arb[nod];
return;
}
int div=(st+dr)/2;
if(a<=div)
Query(fs(nod),st,div);
if(div<b)
Query(fd(nod),div+1,dr);
}
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",&val);
pos=i;
Update(1,1,N);
}
for(i=1;i<=M;i++)
{
scanf("%d%d%d",&op,&a,&b);
if(op)
{
S=0;
Query(1,1,N);
printf("%d\n",S);
}
else
{
pos=a;
val=-b;
Update(1,1,N);
}
}
return 0;
}