#include<stdio.h>
#include<string.h>
FILE*fin=fopen("datorii.in","r");
FILE*fout=fopen("datorii.out","w");
#define maxn (1<<15)
int sum,r,a,b,A[maxn],t[2*maxn],n,m;
void query(int nod,int st,int dr)
{
int mij;
if(a<=st&&dr<=b) sum+=t[nod];
else
{
mij=(st+dr)>>1;
if(a<=mij) query((nod<<1),st,mij);
if(b>=mij+1) query((nod<<1)+1,mij+1,dr);
}
}
void update(int nod,int st,int dr)
{
int mij;
if(st==dr) t[nod]=b;
else
{
mij=(st+dr)>>1;
if(a<=mij) update((nod<<1),st,mij);
else update((nod<<1)+1,mij+1,dr);
t[nod]=t[(nod<<1)]+t[(nod<<1)+1];
}
}
int main()
{
int i;
fscanf(fin,"%d%d",&n,&m);
for(i=1;i<=n;i++)
fscanf(fin,"%d",&A[i]);
memset(t,0,sizeof(t));
for(i=1;i<=n;i++)
{
a=i;b=A[i];
update(1,1,n);
}
for(i=1;i<=m;i++)
{
fscanf(fin,"%d",&r);
if(r)
{
fscanf(fin,"%d%d",&a,&b);
sum=0;
query(1,1,n);
fprintf(fout,"%d\n",sum);
}
else
{
fscanf(fin,"%d%d",&a,&b);
A[a]-=b;
b=A[a];
update(1,1,n);
}
}
fclose(fin);
fclose(fout);
return 0;
}