#include <iostream>
#include <cstdio>
using namespace std;
int v[15001], aint[60005], ql, qr;
void build(int nod, int l, int r) {
int mij;
if(l>r)
return;
if(l==r) {
aint[nod]=v[l];
return;
}
mij=(l+r)/2;
build(2*nod,l,mij);
build(2*nod+1,mij+1,r);
aint[nod]=aint[2*nod]+aint[2*nod+1];
}
void update(int nod, int l, int r, int poz, int val) {
int mij;
if(l>r || poz<l || poz>r)
return;
if(l==r) {
aint[nod]-=val;
return;
}
mij=(l+r)/2;
update(2*nod,l,mij,poz,val);
update(2*nod+1,mij+1,r,poz,val);
aint[nod]=aint[2*nod]+aint[2*nod+1];
}
int query(int nod, int l, int r) {
int mij, rst, rdr;
if(qr<l || ql>r || l>r)
return 0;
if(ql<=l && qr>=r)
return aint[nod];
mij=(l+r)/2;
rst=query(2*nod,l,mij);
rdr=query(2*nod+1,mij+1,r);
return rst+rdr;
}
int main() {
FILE *fin, *fout;
int n, m, i, p, a, b;
fin=fopen("datorii.in","r");
fout=fopen("datorii.out","w");
fscanf(fin, "%d%d",&n,&m);
for(i=1;i<=n;i++)
fscanf(fin, "%d",&v[i]);
build(1,1,n);
for(i=1;i<=m;i++) {
fscanf(fin, "%d%d%d",&p,&a,&b);
if(p==1) {
ql=a;
qr=b;
fprintf(fout, "%d\n",query(1,1,n));
}
else
update(1,1,n,a,b);
}
fclose( fin );
fclose( fout );
return 0;
}