#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("datorii.in");
ofstream fout ("datorii.out");
const int nmax=6e4;
int n,m,v[nmax],a,b,t;
void update(int a,int poz,int st,int dr,int nod)
{
if (st==dr) {v[nod]-=a;
return;}
int mij=(st+dr)/2;
if (poz<=mij) update(a,poz,st,mij,2*nod);
else if (poz>mij) update(a,poz,mij+1,dr,2*nod+1);
v[nod]=v[2*nod]+v[2*nod+1];
}
int query(int l,int r,int st,int dr,int nod)
{
int mij=(st+dr)/2;
if (l<=st && dr<=r) return v[nod];
if (r<=mij) return query(l,r,st,mij,2*nod);
else if (l>mij) return query(l,r,mij+1,dr,2*nod+1);
return query(l,r,st,mij,2*nod)+query(l,r,mij+1,dr,2*nod+1);
}
int main()
{
fin >>n>>m;
for (int i=1;i<=n;i++)
{fin >>a;
update(a*(-1),i,1,n,1);}
for (int i=1;i<=m;i++)
{fin>>t>>a>>b;
if (t==0) update(b,a,1,n,1);
else fout<<query(a,b,1,n,1)<<'\n';}
return 0;
}