#include <bits/stdc++.h>
using namespace std;
const int MAXN=15000;
int sir[MAXN];
int aint[4*MAXN];
void init(int st, int dr, int node){
if(st==dr){
aint[node]=sir[st];
return;
}
int mij=(st+dr)/2;
init(st, mij, 2*node+1);
init(mij+1, dr, 2*node+2);
aint[node]=aint[2*node+1]+aint[2*node+2];
}
void update(int st, int dr, int node, int poz, int val){
if(st>poz || dr<poz)
return;
if(st==dr){
aint[node]-=val;
return;
}
int mij=(st+dr)/2;
if(mij>=poz)
update(st, mij, 2*node+1, poz, val);
else
update(mij+1, dr, 2*node+2, poz, val);
aint[node]=aint[2*node+1]+aint[2*node+2];
}
int query(int st, int dr, int node, int l, int r){
if(st>r || dr<l)
return 0;
if(l<=st && dr<=r)
return aint[node];
int mij=(st+dr)/2;
return query(st, mij, 2*node+1, l, r)+query(mij+1, dr, 2*node+2, l, r);
}
int main(){
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int n, q, i, tip, l, r;
cin>>n>>q;
for(i=0; i<n; i++)
cin>>sir[i];
init(0, n-1, 0);
for(i=0; i<q; i++){
cin>>tip>>l>>r;
if(tip==0)
update(0, n-1, 0, l-1, r);
else
cout<<query(0, n-1, 0, l-1, r-1)<<"\n";
}
return 0;
}