#include <iostream>
#include <fstream>
#define mac 400001
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int tree[mac],v[mac];
int n,k;
void build(int nod, int st,int dr)
{
if(st==dr)
{
tree[nod]=v[st];
return ;
}
int mij=(st+dr)/2;
build(2*nod,st,mij);
build(2*nod+1,mij+1,dr);
tree[nod]=tree[2*nod]+tree[2*nod+1];
}
void update(int nod, int poz, int st, int dr, int val)
{
if(st==dr)
{
tree[nod]=tree[nod]-val;
return ;
}
int mij = (st+dr)/2;
if(poz>mij)
{
update(2*nod+1,poz,mij+1,dr,val);
}
else update(2*nod,poz,st,mij,val);
tree[nod]=tree[2*nod]+tree[2*nod+1];
}
int query(int nod, int x,int y, int st,int dr)
{
if(x<=st and y>=dr)
{
return tree[nod];
}
int mij=(st+dr)/2;
int ans1=0,ans2=0;
if(x<=mij)
{
ans1=query(2*nod,x,y,st,mij);
}
if(y>mij) ans2=query(2*nod+1,x,y,mij+1,dr);
return ans1+ans2;
}
void read()
{
fin>>n>>k;
for(int i=1;i<=n;i++) fin>>v[i];
build(1,1,n);
for(int i=1;i<=k;i++)
{
int t,x,y;
fin>>t>>x>>y;
if(t==1)
{
fout<<query(1,x,y,1,n)<<'\n';
} else update(1,x,1,n,y);
}
}
int main()
{
read();
return 0;
}