#include <iostream>
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int arbore[600001], mijloc;
void creare(int x, int st, int dr, int k, int val)
{
if (st == dr)
{
arbore[x] = val;
return;
}
mijloc = (st+dr)/2;
if (k <= mijloc) creare(x*2, st, mijloc, k, val);
else creare(x*2 + 1, mijloc + 1, dr, k, val);
arbore[x] = arbore[x*2] + arbore[x*2 + 1];
}
void modificare(int x, int st, int dr, int k, int val)
{
if (st == dr)
{
arbore[x] -= val;
return;
}
mijloc = (st+dr)/2;
if (k <= mijloc) modificare(x*2, st, mijloc, k, val);
else modificare(x*2 + 1, mijloc + 1, dr , k, val);
arbore[x] = arbore[x*2] + arbore[x*2+1];
}
int suma_interval(int x, int st, int dr, int i, int j)
{
if (st >= i && dr <= j)
return arbore[x];
int s1=0, s2=0;
mijloc = (st+dr)/2;
if (i <= mijloc)
s1 = suma_interval(x*2, st, mijloc, i, j);
if (j > mijloc)
s2 = suma_interval(x*2+1, mijloc + 1, dr, i, j);
return s1+s2;
}
int main ()
{
int n, m, i, val, optiune, val1, val2;
f >> n >> m;
for(i = 1; i <= n; i++)
{
f>>val;
creare(1, 1, n, i, val);
}
for(i = 1; i <= m; i++)
{
f >> optiune >>val1>>val2;
if(optiune == 1)
{
g << suma_interval(1, 1, n, val1, val2) <<endl;
}
else
{
modificare(1, 1, n, val1, val2);
}
}
}