#include <bits/stdc++.h>
using namespace std;
int v[100000];
int a, b;
void update(int where, int st, int dr) {
if(st == dr) {
v[where] = b;
return ;
}
int mij = (dr - st) / 2 + st;
if(a <= mij)
update(where * 2, st, mij);
else update(where * 2 + 1, mij + 1, dr);
v[where] = v[where * 2] + v[where * 2 + 1];
}
void update2(int where, int st, int dr) {
if(st == dr) {
v[where] -= b;
return ;
}
int mij = (dr - st) / 2 + st;
if(a <= mij)
update2(where * 2, st, mij), v[where] -= b;
else update2(where * 2 + 1, mij + 1, dr), v[where] -= b;
}
int calc(int where, int st, int dr) {
if(a <= st && dr <= b) {
return v[where];
}
int mij = (dr - st) / 2 + st;
int s = 0;
if(a <= mij)
s += calc(where * 2, st, mij);
if(b > mij)
s += calc(where * 2 + 1, mij + 1, dr);
return s;
}
int main()
{
FILE *f = fopen("datorii.in", "r");
FILE *g = fopen("datorii.out", "w");
int n, m, tip;
fscanf(f, "%d %d", &n, &m);
for(int i = 1; i <= n; i ++) {
fscanf(f, "%d", &b);
a = i;
update(1, 1, n);
}
for(int i = 1; i <= m; i ++) {
fscanf(f, "%d %d %d", &tip, &a, &b);
if(tip) {
fprintf(g, "%d\n", calc(1, 1, n));
}
else {
update2(1, 1, n);
}
}
return 0;
}