#include <iostream>
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
const int NMAX=15010;
int n,q,tip,x,y,A[4*NMAX],suma;
void Build(int nod,int st,int dr) {
if(st==dr) {
f>>A[nod];
} else {
int mij=(st+dr)/2;
Build(2*nod,st,mij);
Build(2*nod+1,mij+1,dr);
A[nod]=A[2*nod]+A[2*nod+1];
}
}
void query(int nod,int st,int dr,int a,int b) {
if(a<=st&&dr<=b) {
suma+=A[nod];
} else {
int mij=(st+dr)/2;
if(a<=mij) {
query(2*nod,st,mij,a,b);
}
if(mij+1<=b) {
query(2*nod+1,mij+1,dr,a,b);
}
}
}
void update(int nod,int st,int dr,int a,int b) {
if(st==dr) {
A[nod]-=b;
} else {
int mij=(st+dr)/2;
if(a<=mij) {
update(2*nod,st,mij,a,b);
}
if(mij+1<=a) {
update(2*nod+1,mij+1,dr,a,b);
}
A[nod]=A[2*nod]+A[2*nod+1];
}
}
int main() {
f>>n>>q;
Build(1,1,n);
while(q--) {
f>>tip>>x>>y;
if(tip==1) {
suma=0;
query(1,1,n,x,y);
g<<suma<<"\n";
} else {
update(1,1,n,x,y);
}
}
f.close();
g.close();
return 0;
}