#include <cstdio>
#include <algorithm>
using namespace std;
int i,n,m,op,val,A[60010],p,sol;
void upd(int nod,int a,int b,int st,int dr)
{
int mij;
if(a<=st && dr<=b)
{
A[nod]+=val;
return;
}
mij=st+(dr-st)/2;
if(a<=mij)
upd(nod*2,a,b,st,mij);
else upd(nod*2+1,a,b,mij+1,dr);
A[nod]=A[2*nod]+A[2*nod+1];
}
void find(int nod,int a,int b,int st,int dr)
{
int mij;
if(a<=st && dr<=b)
{
sol+=A[nod];
return;
}
mij=st+(dr-st)/2;
if(a<=mij)
find(nod*2,a,b,st,mij);
if(mij<b) find(nod*2+1,a,b,mij+1,dr);
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d %d\n",&n,&m);
for(i=1;i<=n;++i)
{
scanf("%d ",&val);
upd(1,i,i,1,n);
}
for(i=1;i<=m;++i)
{
scanf("%d %d %d\n",&op,&p,&val);
if(op==0)
{val*=-1;upd(1,p,p,1,n);}
else
{
sol=0;
find(1,p,val,1,n);
printf("%d\n",sol);
}
}
return 0;
}