#include<bits/stdc++.h>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int v[400004];
void update(int nod, int st, int dr, int poz, int val, int semn)
{
if(st==dr)
{
if(semn==1)
v[nod]+=val;
else
v[nod]-=val;
return;
}
int mij=(st+dr)/2;
if(poz<=mij)
update(2*nod,st,mij,poz,val,semn);
else
update(2*nod+1,mij+1,dr,poz,val,semn);
v[nod]=v[2*nod]+v[2*nod+1];
}
int query(int nod, int st, int dr, int l, int r)
{
if(r<st || l>dr)
return 0;
if(st>=l && dr<=r)
return v[nod];
int mij=(st+dr)/2;
if(r<=mij)
return query(2*nod,st,mij,l,r);
else
if(l>=mij+1)
return query(2*nod+1,mij+1,dr,l,r);
else
return query(2*nod,st,mij,l,r)+query(2*nod+1,mij+1,dr,l,r);
}
int main()
{
int n,i,m,x,cod,a,b;
f>>n>>m;
for(i=1;i<=n;i++)
{
f>>x;
update(1,1,n,i,x,1);
}
for(i=1;i<=m;i++)
{
f>>cod>>a>>b;
if(cod==0)
update(1,1,n,a,b,-1);
else
g<<query(1,1,n,a,b)<<'\n';
}
return 0;
}