#include <bits/stdc++.h>
#define LIM 1<<17
/// TONI BO$$ was here
/// #MLC
using namespace std;
int aint[50001];
void update(int st, int dr, int cur, int x, int v){
if(st == dr){
aint[cur] += v;
return ;
}
int mid = (st + dr) / 2;
if(mid >= x)
update(st, mid, cur * 2, x, v);
else
update(mid + 1, dr, cur * 2 + 1, x, v);
aint[cur] = aint[cur * 2] + aint[cur * 2 + 1];
}
/// interogatiile se fac pe intervalul [1...x] , cu alte cuvinte vrem sa vedem cate elemente exista (nemarcate) in intervalul [1...x]
int query(int st, int dr, int cur, int a, int b){
if(st == dr)
return aint[cur];
if(st >= a && dr <= b)
return aint[cur];
int mid = (st + dr) / 2, sol = 0;
if(mid >= a)
sol += query(st, mid, cur * 2, a, b);
if(mid + 1 <= b)
sol += query(mid + 1, dr, cur * 2 + 1, a, b);
return sol;
}
int v[15001];
int main()
{
int n, k, i, q, a, b;
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d", &n, &k);
for(i = 1; i <= n; i++){
scanf("%d", &v[i]);
update(1, n, 1, i, v[i]);
}
while(k--){
scanf("%d%d%d", &q, &a, &b);
if(q == 0)
update(1, n, 1, a, -b);
else
printf("%d\n", query(1, n, 1, a, b));
}
return 0;
}