#include<bits/stdc++.h>
using namespace std;
const int NMAX = 15e3 + 10;
int n, queries, tree[NMAX], v[NMAX];
void compute_input() {
scanf("%d %d", &n, &queries);
for (int i = 1; i <= n; i++)
scanf("%d", &v[i]);
}
void add(int index, int value) {
while (index <= n) {
tree[index] += value;
index = index + (index & -index);
}
}
void build_tree() {
for (int i = 1; i <= n; i++)
add(i, v[i]);
}
int get_prefix(int index) {
int sum = 0;
while (index >= 1) {
sum += tree[index];
index = index - (index & -index);
}
return sum;
}
int query(int left, int right) {
return get_prefix(right) - get_prefix(left - 1);
}
void compute_output() {
for (; queries > 0; queries--) {
int op, x, y; scanf("%d %d %d", &op, &x, &y);
if (op == 0)
add(x, -y);
else
printf("%d\n", query(x, y));
}
}
int main() {
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
compute_input();
build_tree();
compute_output();
}