#include <iostream>
#include <fstream>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
const int NMAX = 15 * 1e3;
int n, m, t, sum;
int v[1 + NMAX];
int aint[1 + 4 * NMAX];
void update(int node, int le, int ri, int pos, int val) {
if(le == ri) {
aint[node] = val;
return;
}
int mid = (le + ri) / 2;
if(pos <= mid)
update(2 * node, le, mid, pos, val);
else
update(2 * node + 1, mid + 1, ri, pos, val);
aint[node] = aint[2 * node] + aint[2 * node + 1];
}
void query(int node, int le, int ri, int from, int to) {
if(from <= le && ri <= to) {
sum += aint[node];
return;
}
int mid = (le + ri) / 2;
if(from <= mid)
query(2 * node, le, mid, from, to);
if(to > mid)
query(2 * node + 1, mid + 1, ri, from, to);
}
int main()
{
in >> n >> m;
for(int i = 1; i <= n; i++) {
in >> v[i];
update(1, 1, n, i, v[i]);
}
for(int i = 1; i <= m; i++) {
int op, x, y;
in >> op >> x >> y;
if(op == 0) {
v[x] -= y;
update(1, 1, n, x, v[x]);
} else {
sum = 0;
query(1, 1, n, x, y);
out << sum << '\n';
}
}
in.close();
out.close();
return 0;
}