#include <bits/stdc++.h>
#define DM 15005
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int segmTree[4*DM],v[DM],n,m,cod,a,b,V;
void make_tree(int nod,int st,int dr){
if(st==dr){
segmTree[nod]=v[st];
return;
}
int mid=(st+dr)/2,fs=2*nod;
make_tree(fs,st,mid),make_tree(fs+1,mid+1,dr);
segmTree[nod]=segmTree[fs]+segmTree[fs+1];
}
void change(int nod,int st,int dr,int poz,int val){
if(st==dr){
segmTree[nod]-=val;
return;
}
int mid=(st+dr)/2, fs=2*nod;
if(poz<mid) change(fs,st,mid,poz,val);
else change(fs+1,mid+1,dr,poz,val);
segmTree[nod]=segmTree[fs]+segmTree[fs+1];
}
int get_val(int nod,int st,int dr,int a,int b){
if(st>=a && dr<=b)
return segmTree[nod];
if(a>dr || b<st)
return 0;
int mid=(st+dr)/2,fs=2*nod;
return (get_val(fs,st,mid,a,b)+get_val(fs+1,mid+1,dr,a,b));
}
int main()
{
fin>>n>>m;
for(int i=1;i<=n;++i) fin>>v[i];
make_tree(1,1,n);
while(m--){
fin>>V>>a>>b;
if(!V) change(1,1,n,a,b);
else fout<<get_val(1,1,n,a,b)<<'\n';
}
return 0;
}