#include<stdio.h>
int n, m, i, x, tip, t, v, p1, p2, init[15002], q[32790];
void cstr(int st, int dr, int poz){
if (st == dr){
init[st] = poz;
return ;
}
int x = (st + dr) / 2;
cstr(st, x, 2*poz); cstr(x+1, dr, 2*poz+1);
}
void update(int poz, int val){
for (poz = init[poz]; poz; poz /= 2)
q[poz] += val;
}
int query(int st, int dr, int poz){
if (p1 <= st && dr <= p2)
return q[poz];
if (st > p2 || dr < p1)
return 0;
int x = (st + dr) / 2;
return query(st, x, 2*poz) + query(x+1, dr, 2*poz+1);
}
int main()
{
freopen("datorii.in", "rt", stdin);
freopen("datorii.out", "wt", stdout);
scanf("%d%d", &n, &m);
cstr(1, n, 1);
for (i = 1; i <= n; i ++){
scanf("%d", &x);
update(i, x);
}
for (i = 1; i <= m; i ++){
scanf("%d%d%d", &tip, &t, &v);
if (!tip)
update(t, -v);
else{
p1 = t, p2 = v;
printf("%d\n", query(1, n, 1));
}
}
return 0;
}