#include <bits/stdc++.h>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
const int Nmax = 15005;
int T[4 * Nmax];
int N,M,x;
inline void build(int i, int left, int right, int x,int poz) {
if(left == right) {
T[i] = x;
} else {
int mid = (left + right) / 2;
if(poz <= mid)
build((i << 1),left, mid,x,poz);
else
build((i << 1) + 1,mid + 1, right,x,poz);
T[i] = T[(i << 1)] + T[(i << 1) + 1];
}
}
inline void update(int i, int left, int right, int poz, int x) {
if(left == right) {
T[i] -= x;
} else {
int mid = (left + right) / 2;
if(poz <= mid)
update((i << 1), left, mid, poz,x);
else
update((i << 1) + 1, mid + 1, right, poz,x);
T[i] = T[(i << 1)] + T[(i << 1) + 1];
}
}
inline int sum(int i, int left, int right, int lq, int rq) {
if(lq > rq)
return 0;
if(lq == left && rq == right)
return T[i];
int mid = (left + right) / 2;
return sum((i << 1), left, mid, lq, min(rq,mid)) +
sum((i << 1) + 1, mid + 1, right, max(lq,mid + 1), rq);
}
int main() {
ios_base::sync_with_stdio(0);
in >> N >> M;
for(int i = 1; i <= N; ++i) {
int x;
in >> x;
build(1,1,N,x,i);
}
bool p;
int x,y;
while(M--) {
in >> p >> x >> y;
if(!p) {
update(1,1,N,x,y);
} else {
out << sum(1,1,N,x,y) << '\n';
}
}
return 0;
}