#include<fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,v[15002],h[45002],s;
void build(int nod,int x,int y)
{
int m=(x+y)/2;
if(x==y) h[nod]=v[x];
else
{
build(nod*2,x,m);
build(nod*2+1,m+1,y);
h[nod]=h[nod*2]+h[nod*2+1];
}
}
void change(int nod,int x,int y,int pos,int val)
{
int m=(x+y)/2;
if(x==y) h[nod]=max(h[nod]-val,0);
else
{
if(pos<=m) change(nod*2,x,m,pos,val);
else change(nod*2+1,m+1,y,pos,val);
h[nod]=h[nod*2]+h[nod*2+1];
}
}
int ask(int nod,int x,int y,int xi,int yi)
{
if(xi<=x&&yi>=y) return h[nod];
int m=(x+y)/2,s=0;
if(xi<=m)
{
s+=ask(nod*2,x,m,xi,yi);
}
if(yi>m)
{
s+=ask(nod*2+1,m+1,y,xi,yi);
}
return s;
}
void read()
{
f>>n>>m;
for(int i=1;i<=n;i++) f>>v[i];
build(1,1,n);
for(int i=1;i<=m;i++)
{
int ok,xi,yi;
f>>ok>>xi>>yi;
if(ok==1) g<<ask(1,1,n,xi,yi)<<"\n";
else change(1,1,n,xi,yi);
}
}
int main(){
read();
return 0;
}