#include <stdio.h>
int dat[32768];
int query(int n, int left, int right, int a, int b);
void update(int n, int left, int right, int a, int b, int v);
int main(int argc, char *argv[])
{
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
int n, m;
int i;
scanf("%d%d", &n, &m);
for (i = 0; i <= n; ++i) {
int tmp;
scanf("%d", &tmp);
update(1, 1, n, i, i, tmp);
}
for (i = 0; i < m; ++i) {
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
if (a) {
int tmp = query(1, 1, n, b, c);
printf("%d\n", tmp);
} else
update(1, 1, n, b, b, -c);
}
return 0;
}
int query(int n, int left, int right, int a, int b)
{
if (a <= left && right <= b)
return dat[n];
int r = 0, middle = (left + right) / 2;
if (a <= middle)
r += query(2 * n, left, middle, a, b);
if (b > middle)
r += query(2 * n + 1, middle + 1, right, a, b);
return r;
}
void update(int n, int left, int right, int a, int b, int v)
{
if (a <= left && right <= b) {
dat[n] += v;
return;
}
int middle = (left + right) / 2;
if (a <= middle)
update(2 * n, left, middle, a, b, v);
if (b > middle)
update(2 * n + 1, middle + 1, right, a, b, v);
dat[n] = dat[n * 2] + dat[n * 2 + 1];
}