#include <fstream>
#define NMAX 15005
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int ai[4*NMAX];
int v[NMAX];
void build(int n, int l,int r){
if(l==r){
ai[n]=v[l];
}else{
int m=(l+r)/2;
build(2*n,l,m);
build(2*n+1,m+1,r);
ai[n]=ai[2*n]+ai[2*n+1];
}
}
void update(int n, int l,int r, int position,int new_value){
if(l==r){
ai[n]-=new_value;
}else{
int m =(r+l)/2;
if(position<=m)
update(2*n,l,m,position,new_value);
else
update(2*n+1,m+1,r,position,new_value);
ai[n]=ai[2*n]+ai[2*n+1];
}
}
int query(int n, int l, int r, int q_l,int q_r){
if(q_l<=l && r<=q_r)
return ai[n];
else{
int m=(r+l)/2;
if(q_r<=m) return query( 2*n, l, m, q_l, q_r);
if(m<q_l) return query( 2*n+1, m+1, r, q_l, q_r);
return query( 2*n, l, m, q_l, q_r)+
query( 2*n+1, m+1, r, q_l, q_r);
}
}
int n,m;
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
fin>>v[i];
build(1,1,n);
int q,l,r;
int t,v;
for(int i=1;i<=m;i++){
fin>>q;
if(q==0){
fin>>t>>v;
update(1,1,n,t,v);
}else{
fin>>l>>r;
fout<<query(1,1,n,l,r)<<"\n";
}
}
return 0;
}