#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int v[15002],arbint[150002];
void update(int st, int dr, int pos, int nod, int achit){
int mij;
if(st==dr){ v[pos] -= achit; arbint[nod] = v[pos];}
else{
mij = (st+dr)/2;
if(pos <= mij) update(st,mij,pos,nod*2,achit);
else update(mij+1,dr,pos,nod*2+1,achit);
arbint[nod] = arbint[nod*2] + arbint[2*nod+1];
}
}
int interogare(int st, int dr, int A, int B, int nod){
int mij;
if(st == A && dr == B) return arbint[nod];
else{
mij = (st+dr)/2;
if(B <= mij) return interogare(st,mij,A,B,2*nod);
else if(A > mij) return interogare(mij+1,dr,A,B,2*nod+1);
else return interogare(st,mij,A,mij,2*nod) + interogare(mij+1,dr,mij+1,B,2*nod+1);
}
}
int main(){
int N,M,A,B,x;
fin>>N>>M;
int i;
for(i = 1; i <= N; i++){
fin>>v[i];
update(1,N,i,1,0);
}
for(i = 0; i < M; i++){
fin>>x>>A>>B;
if(x == 0){
update(1,N,A,1,B);
}
if(x == 1){
fout<<interogare(1,N,A,B,1)<<"\n";
}
}
}