#include <bits/stdc++.h>
#include <fstream>
using namespace::std;
int N, M;
vector<int> A, st;
int update(int pos, int val, int l, int r, int x) {
if (pos < l || pos > r) return st[x];
if (l == r) {
st[x] -= val;
return st[x];
}
int mij = (l+r)/2;
st[x] = update(pos, val, l, mij, x*2) + update(pos, val, mij+1, r, x*2+1);
return st[x];
}
int query(int a, int b, int l, int r, int x) {
if (b < l || r < a) return 0;
if (a <= l && r <= b) return st[x];
int mij = (l+r)/2;
return query(a, b, l, mij, x*2) + query(a, b, mij+1, r, x*2+1);
}
int main() {
ifstream fin("datorii.in");
ofstream fout("datorii.out");
fin >> N >> M;
st.resize(N << 2, 0);
for (int i = 1; i < N+1; i++) {
int val;
fin >> val;
update(i, -val, 1, N, 1);
}
while (M--) {
int cod;
fin >> cod;
if (cod == 0) {
int T, V;
fin >> T >> V;
update(T, V, 1, N, 1);
}
else {
int P, Q;
fin >> P >> Q;
fout << query(P, Q, 1, N, 1) << '\n';
}
}
}