#include <bits/stdc++.h>
#define NMAX 15005
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int N, M, S;
int v[NMAX], ait[4 * NMAX];
void build(int poz, int st, int dr)
{
if (st == dr)
{
ait[poz] = v[st];
return;
}
int mij = (st + dr) / 2;
build(poz * 2, st, mij);
build(poz * 2 + 1, mij + 1, dr);
ait[poz] = ait[poz * 2] + ait[poz * 2 + 1];
}
void upd(int poz, int act, int st, int dr)
{
if (st == act)
{
ait[poz] = v[st];
return;
}
if (st > act || dr < act)
return;
int mij = (st + dr) / 2;
upd(poz * 2, act, st, mij);
upd(poz * 2 + 1, act, mij + 1, dr);
ait[poz] = ait[poz * 2] + ait[poz * 2 + 1];
}
void query(int poz, int lft, int rt, int st, int dr)
{
if (st >= lft && dr <= rt)
{
S += ait[poz];
return;
}
if (dr < lft || st > rt)
return;
int mij = (st + dr) / 2;
query(poz * 2, lft, rt, st, mij);
query(poz * 2 + 1, lft, rt, mij + 1, dr);
}
int main()
{
fin >> N >> M;
for (int i = 1; i <= N; i++)
fin >> v[i];
build(1, 1, N);
for (int i = 1; i <= M; i++)
{
int op, x, y;
fin >> op >> x >> y;
if (op == 0) ///ziua x, valoare y
{
v[x] -= y;
upd(1, x, 1, N);
}
else if (op == 1) ///start, end
{
S = 0;
query(1, x, y, 1, N);
fout << S << "\n";
}
}
return 0;
}