#include <bits/stdc++.h>
using namespace std;
const int MAX = 15002;
ifstream f("datorii.in");
ofstream g("datorii.out");
int N, K, x, cer, arg1, arg2, arbore[4 * MAX + 1];
void add(int poz, int val, int nod, int a, int b) {
if(a == b) arbore[nod] += val;
else {
int mij = (a + b) / 2;
if(poz <= mij) add(poz, val, nod * 2, a, mij);
else add(poz, val, nod * 2 + 1, mij + 1, b);
arbore[nod] += val;
}
}
int query(int st, int dr, int nod, int a, int b) {
if(st <= a && dr >= b) return arbore[nod];
int mij = (a + b) / 2, res1 = 0, res2 = 0;
if(st <= mij) res1 = query(st, dr, nod * 2, a, mij);
if(dr > mij) res2 = query(st, dr, nod * 2 + 1, mij + 1, b);
return res1 + res2;
}
int main()
{
f >> N >> K;
for(int i = 1; i <= N; i++) {
f >> x;
add(i, x, 1, 1, N);
}
for(int i = 1; i <= N; i++) {
f >> cer >> arg1 >> arg2;
if(cer == 0) add(arg1, -arg2, 1, 1, N);
else g << query(arg1, arg2, 1, 1, N) << "\n";
}
return 0;
}