#include<fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,i,v[100001],m;
int op,poz,nr;
int arb[400001];
void build(int poz,int st,int dr)
{
if(st==dr)
{
arb[poz]=v[st];
}
else
{
int mid=(st+dr)/2;
build(poz*2,st,mid);
build(poz*2+1,mid+1,dr);
arb[poz]=arb[2*poz]+arb[2*poz+1];
}
}
void update(int poz,int nr,int st,int dr,int p)
{
if(st==dr)
{
arb[poz]-=nr;
return;
}
int mid=(st+dr)/2;
if(p<=mid)
update(poz*2,nr,st,mid,p);
else
update(poz*2+1,nr,mid+1,dr,p);
arb[poz]-=nr;
}
int query(int qst,int qdr,int st,int dr,int poz)
{
if(st>=qst&&dr<=qdr)
return arb[poz];
if(st>qdr)
return 0;
if(dr<qst)
return 0;
int mid=(st+dr)/2;
int a,b;
a=query(qst,qdr,st,mid,poz*2);
b=query(qst,qdr,mid+1,dr,poz*2+1);
return a+b;
}
int main()
{
fin>>n>>m;
for(i=1; i<=n; i++)
fin>>v[i];
build(1,1,n);
for(i=1; i<=m; i++)
{
fin>>op>>poz>>nr;
if(op==0)
update(1,nr,1,n,poz);
else
fout<<query(poz,nr,1,n,1)<<"\n";
}
}