#include<fstream>
using namespace std;
int A[1<<14+8], N, M;
ifstream f("datorii.in");
ofstream g("datorii.out");
void insert(int nod, int st, int dr, int poz, int val) {
if(st==dr) {
A[nod]+=val;
return;
}
int mij=(st+dr)/2;
if(poz<=mij)
insert(2*nod,st,mij,poz,val);
else
insert(2*nod+1,mij+1,dr,poz,val);
A[nod]+=val;
}
void update(int nod, int st, int dr, int poz, int val) {
if(st==dr) {
A[nod]-=val;
return;
}
int mij=(st+dr)/2;
if(poz<=mij)
update(2*nod,st,mij,poz,val);
else
update(2*nod+1,mij+1,dr,poz,val);
A[nod]=A[2*nod]+A[2*nod+1];
}
void query(int nod, int st, int dr, int left, int right, int &cost) {
if(left<=st && dr<=right) {
cost+=A[nod];
return;
}
int mij=(st+dr)/2;
if(left<=mij)
query(2*nod,st,mij,left,right,cost);
if(right>mij)
query(2*nod+1,mij+1,dr,left,right,cost);
}
int main() {
int i, val, poz, left, right, cost, op;
f>>N>>M;
for(i=1; i<=N; i++) {
f>>val;
insert(1,1,N,i,val);
}
while(M--) {
f>>op;
if(!op) {
f>>poz>>val;
update(1,1,N,poz,val);
}
else {
cost=0;
f>>left>>right;
query(1,1,N,left,right,cost);
g<<cost<<"\n";
}
}
f.close(); g.close();
return 0;
}