#include <cstdio>
#define FIN "datorii.in"
#define FOUT "datorii.out"
#define N 15010
int arb[N * 4 + 100];
int poz, val, start, finish, sum;
void update(int nod, int left, int right)
{
int mid;
if (left == right)
{
arb[nod] += val;
return;
}
mid = (left + right) >> 1;
if (poz <= mid)
update(nod * 2, left, mid);
else
update(nod * 2 + 1, mid + 1, right);
arb[nod] = arb[nod * 2] + arb[nod * 2 + 1];
}
void query(int nod, int left, int right)
{
int mid;
if (start <= left && right <= finish)
{
sum += arb[nod];
return;
}
mid = (left + right) >> 1;
if (start <= mid)
query(nod * 2, left, mid);
if (finish > mid)
query(nod * 2 + 1, mid + 1, right);
}
int main()
{
int i, type, n, m;
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%d%d", &n, &m);
for (poz = 1; poz <= n; ++poz)
{
scanf("%d", &val);
update(1, 1, n);
}
for (i = 1; i <= m; ++i)
{
scanf("%d", &type);
if (type == 0)
{
scanf("%d%d", &poz, &val);
val *= -1;
update(1, 1, n);
}
else
{
scanf("%d%d", &start, &finish);
sum = 0;
query(1, 1, n);
printf("%d\n", sum);
}
}
}