#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n, m, i, op, val, poz, pozFinal;
int arbore[200010], v[500010];
void create(int nod, int left, int right)
{
if (left == right)
{
arbore[nod] = v[left - 1];
return;
}
create(nod * 2, left, (left + right) / 2);
create(nod * 2 + 1, (left + right) / 2 + 1, right);
arbore[nod] = arbore[nod * 2] + arbore[nod * 2 + 1];
}
void modif(int nod, int left, int right, int poz, int val)
{
if (poz < left || poz > right)
return;
if (left == right)
{
arbore[nod] -= val;
return;
}
if (poz <= (left + right) / 2)
modif(nod * 2, left, (left + right) / 2, poz, val);
else
modif(nod * 2 + 1, (left + right) / 2 + 1, right, poz, val);
arbore[nod] = arbore[nod * 2] + arbore[nod * 2 + 1];
}
int sum(int nod, int left, int right, int i, int j)
{
if (right < i || left > j)
return 0;
if (i <= left && j >= right)
return arbore[nod];
return sum(nod * 2, left, (left + right) / 2, i, j) + sum(nod * 2 + 1, (left + right) / 2 + 1, right, i, j);
}
int main()
{
fin >> n >> m;
for (int i = 0; i < n; i++)
fin >> v[i];
create(1, 1, n);
for (int i = 1; i <= m; i++)
{
fin >> op >> poz;
if (op == 0)
{
fin >> val;
modif(1, 1, n, poz, val);
}
else
{
fin >> pozFinal;
fout << sum(1, 1, n, poz, pozFinal) << '\n';
}
}
return 0;
}