#include <cstdio>
using namespace std;
int n,m,a[15001],s[30101],op,x,y,poz;
void Creare(int nod,int st,int dr)
{ int mij=st+(dr-st)/2;
if(st==dr) s[nod]=a[st];
else
{ Creare(nod*2,st,mij);
Creare(nod*2+1,mij+1,dr);
s[nod]=s[nod*2]+s[nod*2+1];
}
}
int Suma(int nod,int st,int dr,int pozs,int pozd)
{ if(st>=pozs&&dr<=pozd) return s[nod];
else if(st>pozd) return 0;
else if(dr<pozs) return 0;
else {
int mij=st+(dr-st)/2;
return Suma(nod*2,st,mij,pozs,pozd)+Suma(nod*2+1,mij+1,dr,pozs,pozd);
}
}
int Find(int nod,int st,int dr,int x)
{ if(st==dr&&st==x) return nod;
else {int mij=st+(dr-st)/2;
if(mij<x) return Find(nod*2+1,mij+1,dr,x);
else return Find(nod*2,st,mij,x);
}
}
void Actualizare(int poz,int y)
{ s[poz]-=y;
if(poz!=1) Actualizare(poz/2,y);
}
int main()
{ FILE *f,*g;
f=fopen("datorii.in","r");
g=fopen("datorii.out","w");
fscanf(f,"%d %d",&n,&m);
int i;
for(i=1;i<=n;i++) fscanf(f,"%d",&a[i]);
Creare(1,1,n);
for(i=1;i<=m;i++)
{ fscanf(f,"%d %d %d",&op,&x,&y);
if(op==1) fprintf(g,"%d\n",Suma(1,1,n,x,y));
if(op==0) {poz=Find(1,1,n,x);Actualizare(poz,y);}
}
return 0;
}