#include <bits/stdc++.h>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
const int nx=15002;
int n,m,x,y,q,v[nx],arb[4*nx];
void build(int nod, int st, int dr)
{
if(st==dr)
arb[nod]=v[st];
else
{
int m=(st+dr)/2;
int nod1=2*nod;
int nod2=2*nod + 1;
build(nod1,st,m);
build(nod2,m+1,dr);
arb[nod]=arb[nod1]+arb[nod2];
}
}
void pay (int nod, int st, int dr, int poz, int val)
{
if(st==dr && st==poz)
arb[nod]-=val;
else
{
int m=(st+dr)/2;
int nod1=2*nod;
int nod2=2*nod + 1;
if(poz<=m)
pay(nod1,st,m,poz,val);
else
pay(nod2,m+1,dr,poz,val);
arb[nod]=arb[nod1]+arb[nod2];
}
}
int ask (int nod, int st, int dr, int x, int y)
{
if(st==x && dr==y)
return arb[nod];
else
{
int m=(st+dr)/2;
int nod1=2*nod;
int nod2=2*nod+1;
if(x<=m)
{
if(y<=m)
return ask(nod1,st,m,x,y);
else
return ask(nod1,st,m,x,m)+ask(nod2,m+1,dr,m+1,y);
}
else return ask(nod2,m+1,dr,x,y);
}
}
int main()
{
in>>n>>m;
for(int i=1; i<=n; i++)
in>>v[i];
build(1,1,n);
for(;m;m--)
{
in>>q>>x>>y;
if(q==0)
pay(1,1,n,x,y);
else
out<<ask(1,1,n,x,y)<<'\n';
}
return 0;
}