#include <bits/stdc++.h>
using namespace std;
#define f cin
#define g cout
const int c=150000;
int n,arb[4*c],v[c];
void build(int nod, int st, int dr)
{
if(st==dr) arb[nod]=v[st];
else if(st<=dr)
{
int mij=(st+dr)/2;
build(nod*2,st,mij);
build(nod*2+1,mij+1,dr);
arb[nod]=arb[nod*2]+arb[nod*2+1];
}
}
void update(int nod, int st, int dr, int poz, int val)
{
if(st==dr and poz==st)
arb[nod]-=val;
else if(st<=dr)
{
int mij=(st+dr)/2;
if(poz<=mij) update(nod*2,st,mij,poz,val);
else update(nod*2+1,mij+1,dr,poz,val);
arb[nod]=arb[nod*2]+arb[nod*2+1];
}
}
int query(int nod, int st, int dr, int left, int right)
{
if(st>=left and dr<=right)
return arb[nod];
else if(st<=dr)
{
int mij=(st+dr)/2;
if(right<=mij) return query(nod*2,st,mij,left,right);
else if(left>mij) return query(nod*2+1,mij+1,dr,left,right);
else return query(nod*2,st,mij,left,mij)+query(nod*2+1,mij+1,dr,mij+1,right);
}
}
int x,y,cer,q;
int main()
{
f>>n>>q;
for(int i=1; i<=n; ++i) f>>v[i];
build(1,1,n);
for(int i=1; i<=q; ++i)
{
f>>cer>>x>>y;
if(cer==0) update(1,1,n,x,y);
else g<<query(1,1,n,x,y)<<'\n';
}
int a;
}