#include <iostream>
#include <fstream>
using namespace std;
const int nmax = 15010;
int n, q;
int a[4 * nmax];
ifstream fin("datorii.in");
ofstream fout("datorii.out");
void build(int nod, int st, int dr)
{
if (st == dr)
fin >> a[nod];
else
{
int mid = (st + dr) / 2;
build(2 * nod, st, mid);
build(2 * nod + 1, mid + 1, dr);
a[nod] = a[2 * nod] + a[2 * nod + 1];
}
}
void update(int nod, int st, int dr, int poz, int val)
{
if (st == dr)
a[nod] += val;
else
{
int mid = (st + dr) / 2;
if (poz <= mid)
update(2 * nod, st, mid, poz, val);
else
update(2 * nod + 1, mid + 1, dr, poz, val);
a[nod] = a[2 * nod] + a[2 * nod + 1];
}
}
void query(int nod, int st, int dr, int st_int, int dr_int, int &sol)
{
if (st >= st_int && dr <= dr_int)
sol += a[nod];
else
{
int mid = (st + dr) / 2;
if (st_int <= mid)
query(2 * nod, st, mid, st_int, dr_int, sol);
if (dr_int > mid)
query(2 * nod + 1, mid + 1, dr, st_int, dr_int, sol);
}
}
int main()
{
fin >> n >> q;
build(1, 1, n);
for (int i = 1; i <= q; i++)
{
int tip;
fin >> tip;
if (tip == 0)
{
int poz, val;
fin >> poz >> val;
/// update
update(1, 1, n, poz, -val);
}
else
{
int st, dr;
fin >> st >> dr;
/// query
int sol = 0;
query(1, 1, n, st, dr + 1, sol);
fout << sol << "\n";
}
}
}