#include <fstream>
#define Nmax 15002
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int a[Nmax],arb[Nmax],n,m;
void Read()
{
int i;
fin>>n>>m;
for(i=1;i<=n;++i)
fin>>a[i];
}
int Build(int l,int r,int nod)
{
if(r==l){
arb[nod]=a[l];
return arb[nod];
}
int val1,val2,mid;
mid=l+(r-l)/2;
val1=Build(l,mid,2*nod);
val2=Build(mid+1,r,2*nod+1);
arb[nod]=val1+val2;
return arb[nod];
}
void Update(int l,int r,int nod,int i,int val)
{
if(r==l){ a[l]-=val; arb[nod]-=val; return;}
int mid=l+(r-l)/2;
if(i<=mid) Update(l,mid,2*nod,i,val);
else Update(mid+1,r,2*nod+1,i,val);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
int Query(int l,int r,int nod,int st,int dr)
{
if(l>=st&&r<=dr)return arb[nod];
if(l>dr||r<st)return 0;
int mid=l+(r-l)/2;
int val1=Query(l,mid,2*nod,st,dr);
int val2=Query(mid+1,r,2*nod+1,st,dr);
return val1+val2;
}
int main()
{
Read();
Build(1,n,1);
int i,cod,x,y;
for(i=1;i<=m;++i)
{
fin>>cod>>x>>y;
if(cod==0)Update(1,n,1,x,y);
else fout<<Query(1,n,1,x,y)<<"\n";
}
return 0;
}