#include <iostream>
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,arb[50010],a,b,i,val,poz;
bool op;
void add(int lhs,int rhs,int v)
{int mij;
if(lhs==poz&&rhs==poz)arb[v]=val;
else{mij=(lhs+rhs)/2;
if(poz<=mij)add(lhs,mij,v*2);
else add(mij+1,rhs,v*2+1);
arb[v]=arb[v*2]+arb[v*2+1];
}
}
void update(int lhs,int rhs,int v,int a,int b)
{int mij;
if(lhs==a&&rhs==a)arb[v]-=b;
else{mij=(lhs+rhs)/2;
if(a<=mij)update(lhs,mij,v*2,a,b);
else update(mij+1,rhs,v*2+1,a,b);
arb[v]=arb[v*2]+arb[v*2+1];
}
}
int query(int lhs,int rhs,int v,int a,int b)
{
if(lhs>=a && rhs<=b)return arb[v];
int mij=(lhs+rhs)/2;
int sol1=0,sol2=0;
if(a<=mij)sol1=query(lhs,mij,v*2,a,b);
if(b>mij)sol2=query(mij+1,rhs,v*2+1,a,b);
return sol1+sol2;
}
int main()
{f>>n>>m;
for(i=1;i<=n;++i)
f>>val,poz=i,add(1,n,1);
for(i=1;i<=m;i++)
{f>>op>>a>>b;
if(op==0)update(1,n,1,a,b);
else g<<query(1,n,1,a,b)<<'\n';
}
}