#include <cstdio>
int n, m, a[15010], q;
void update(int i, int n) {
int j = (1<<q) + i;
a[j]+=n;
while(j!=1) {
j/=2;
a[j]+=n;
}
}
int query(int n, int st, int dr, int x, int y) {
if(x <= st && dr <= y)
return a[n];
int s=0, m=(st+dr)/2;
if(x<=m)
s=query(n*2, st, m, x, y);
if(m<y)
s+=query(n*2+1, m+1, dr, x, y);
return s;
}
void citeste() {
int i, x;
for(i=0; i<n; i++) {
scanf("%d", &x);
update(i, x);
}
}
void print() {
int i;
for(i=0; i<1<<(q+1); i++)
printf("%d ", a[i]);
printf("\n");
}
int main() {
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d %d", &n, &m);
int i=1;
q=0;
while(i<<q < n)
q++;
citeste();
// print();
// printf("%d %d %d", 3, 6, query(1, 1, 1<<(q+1)-1, 1, 4));
int j, k, l;
for(i=0; i<m; i++)
{
scanf("%d %d %d", &j, &k, &l);
if(j==0)
update(k-1, -l);
else
printf("%d\n", query(1, 1, 1<<(q+1)-1, k, l));
}
return 0;
}