#include <bits/stdc++.h>
using namespace std;
const int nmax=1e5+5;
ifstream fin ("datorii.in");
ofstream fout("datorii.out");
int V[4*nmax];
void update(int nod, int l, int r, int pos, int val)
{
if(l==r)V[nod]+=val;
else
{
int mid=(l+r)/2;
if(pos<=mid)
update(2*nod,l,mid,pos,val);
else
update(2*nod+1,mid+1,r,pos,val);
V[nod]=V[2*nod]+V[2*nod+1];
}
}
int query(int nod, int l, int r, int x, int y)
{
int ans_l=0, ans_r=0;
if(l>=x && r<=y)
return V[nod];
else
{
int mid=(l+r)/2;
if(mid>=x)
ans_l=query(2*nod,l,mid,x,y);
if(mid<y)
ans_r=query(2*nod+1,mid+1,r,x,y);
return ans_l+ans_r;
}
}
int main()
{
int n,q;
fin >> n >> q;
for(int i=1 ; i<=n ; ++i)
{
int x;
fin >> x;
update(1,1,n,i,x);
}
for(int i=1 ; i<=q ; ++i)
{
int t,x,y;
fin >> t >> x >> y;
if(t==0)
update(1,1,n,x,-y);
else
fout << query(1,1,n,x,y) << '\n';
}
return 0;
}