#include <iostream>
#include <cstdio>
#define NMAX 15000
using namespace std;
int n, m;
int aint[4 * NMAX + 5];
void update(int nod, int st, int dr, int val, int poz) {
int mij = (st + dr) / 2;
aint[nod] += val;
if(st == dr)
return;
if(poz <= mij)
update(2 * nod, st, mij, val, poz);
else
update(2 * nod + 1, mij + 1, dr, val, poz);
}
int query(int nod, int st, int dr, int qst, int qdr) {
if(qdr < st || qst > dr || qst > qdr)
return 0;
if(st >= qst && dr <= qdr)
return aint[nod];
int mij = (st + dr) / 2;
return query(2 * nod, st, mij, qst, qdr) + query(2 * nod + 1, mij + 1, dr, qst, qdr);
}
int main() {
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
int x, y, z;
scanf("%d %d", &n, &m);
for(int i = 1; i <= n; i++) {
scanf("%d", &x);
update(1, 1, n, x, i);
}
for(int i = 1; i <= m; i++) {
scanf("%d %d %d", &z, &x, &y);
if(!z)
update(1, 1, n, -y, x);
else
printf("%d\n", query(1, 1, n, x, y));
}
return 0;
}