#include <vector>
#include <fstream>
#define fn "datorii."
using namespace std;
ifstream f(fn"in");
ofstream g(fn"out");
int maxim=15010;
int n, m, v[60050], op, a, b;
int query(int nod, int st, int dr, int l, int r)
{
if(st >= l and dr <= r)
return v[nod];
int mij = (st + dr) / 2;
int sta,dra;
if(l <= mij)
sta = query(2 * nod, st, mij, l, r);
if(r > mij)
dra = query(2 * nod + 1, mij + 1, dr, l, r);
return sta + dra;
}
void update(int nod, int st, int dr, int index, int val)
{
if (st == dr)
{
v[nod] += val;
}
else {
int mij = (st + dr) / 2;
if (index <= mij)
update(2 * nod, st, mij, index, val);
else
update(2 * nod + 1, mij + 1, dr, index, val);
v[nod] = v[2 * nod] + v[2 * nod + 1];
}
}
int main()
{
f>>n>>m;
for (int i = 1 ; i <= n ; ++i)
{
f>>a;
update(1, 1, n, i, a);
}
for (int i = 0 ; i < m ; ++i)
{
f>>op>>a>>b;
if(op == 1)
g << query(1, 1, n, a, b) << '\n';
else
update(1, 1, n, a, -b);
}
return 0;
}