#include <cstdio>
#define dim 30001
int N, M;
int T[dim];
void update(int n, int st, int dr, int p, int v)
{
T[n] += v;
if(st == dr)
return;
else
{
int m = (st + dr) >> 1;
if(p <= m) update(n<<1, st, m, p, v);
else update((n<<1)+1, m+1, dr, p, v);
}
}
int querry(int n, int st, int dr, int a, int b)
{
if(st == dr)
return T[n];
else
{
if(st >= a && dr <= b)
return T[n];
else
{
int m = (st + dr) >> 1;
int t = 0;
if(a <= m) t += querry(n<<1, st, m, a, b);
if(b > m) t += querry((n<<1)+1, m+1, dr, a, b);
return t;
}
}
}
int main()
{
freopen("datorii.in", "rt", stdin);
freopen("datorii.out", "wt", stdout);
int i, v, a, b, c;
for(scanf("%d %d", &N, &M), i=1; i<=N; ++i)
{
scanf("%d", &v);
update(1, 1, N, i, v);
}
for(i=1; i<=M; ++i)
{
scanf("%d %d %d", &a, &b, &c);
if(!a)
update(1, 1, N, b, -c);
else
printf("%d\n", querry(1, 1, N, b, c));
}
fclose(stdin);
fclose(stdout);
return 0;
}