#include <cstdio>
#define MAX 15001
using namespace std;
int d[100*MAX], m, n, sum;
void Update(int nod, int st, int dr, int p, int v);
void Querry(int nod, int st, int dr, int a, int b);
int main()
{
int i, x1, x2, q, op;
FILE * fin = fopen("datorii.in", "r");
FILE * fout = fopen("datorii.out", "w");
fscanf(fin, "%d %d", &n, &m);
for (i = 1; i <= n; i++)
{
fscanf(fin, "%d", &x1);
Update(1, 1, n, i, x1);
}
for (q = 1; q <= m; q++)
{
fscanf(fin, "%d %d %d", &op, &x1, &x2);
if (op == 0) Update(1, 1, n, x1, -x2);
else
{
sum = 0;
Querry(1, 1, n, x1, x2);
fprintf(fout, "%d\n", sum);
}
}
fclose(fin);
fclose(fout);
return 0;
}
void Update(int nod, int st, int dr, int p, int v)
{
if (st == dr)
{
d[nod] += v;
return;
}
int mijl = (st+dr)/2;
if (p <= mijl) Update(2*nod, st, mijl, p, v);
else Update(2*nod+1, mijl+1, dr, p, v);
d[nod] += v;
}
void Querry(int nod, int st, int dr, int a, int b)
{
if (a <= st && dr<= b)
{
sum += d[nod];
return;
}
int mijl = (st+dr)/2;
if (a <= mijl) Querry(2*nod, st, mijl, a, b);
if (mijl < b) Querry(2*nod+1, mijl+1, dr, a, b);
}