#include <fstream>
#define N 15001
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int v[N * 4];
void build(int poz, int st, int dr) {
if(st==dr) {
fin>>v[poz];
return;
}
int mij = (st+dr)/2;
build(poz * 2, st, mij);
build(poz * 2 + 1, mij+1, dr);
v[poz] = v[poz * 2] + v[poz * 2 + 1];
}
void update(int n, int searchedPos, int st, int dr, int idx, int decreaseBy) {
if(st==dr) {
v[idx] -= decreaseBy;
return;
}
int mij = (st+dr)/2;
if(searchedPos<=mij)
update(n, searchedPos, st, mij, idx * 2, decreaseBy);
else
update(n, searchedPos, mij + 1, dr, idx * 2 + 1, decreaseBy);
v[idx] = v[idx * 2] + v[idx * 2 + 1];
}
int query(int n, int poz, int st, int dr, int queryL, int queryR) {
if(dr < queryL || st > queryR)
return 0;
if(st>dr)
return 0;
if(queryL<=st && dr<=queryR)
return v[poz];
int mij = (st + dr)/2;
int s = 0;
s += query(n, poz * 2, st, mij, queryL, queryR);
s += query(n, poz * 2+1, mij+1, dr, queryL, queryR);
return s;
}
int main()
{
int n, m, q, a, b;
fin>>n>>m;
build(1, 1, n);
for(int i = 1; i <= m; i++) {
fin>>q>>a>>b;
if(q==0) {
update(n, a, 1, n, 1, b);
}
else {
fout<<query(n, 1, 1, n, a, b)<<'\n';
}
}
fin.close();
fout.close();
return 0;
}