#include <fstream>
using namespace std;
ifstream in;
ofstream out;
int dat[32768];
int query(int n, int left, int right, int a, int b);
void update(int n, int left, int right, int a, int b, int v);
int main(int argc, char *argv[])
{
in.open("datorii.in");
out.open("datorii.out");
int n, m;
in >> n >> m;
for (int i = 0; i <= n; ++i) {
int tmp;
in >> tmp;
update(1, 1, n, i, i, tmp);
}
for (int i = 0; i < m; ++i) {
int a, b, c;
in >> a >> b >> c;
if (a) {
int tmp = query(1, 1, n, b, c);
out << tmp;
} else
update(1, 1, n, b, b, -c);
}
in.close();
out.close();
return 0;
}
int query(int n, int left, int right, int a, int b)
{
if (a <= left && right <= b)
return dat[n];
int r = 0, middle = (left + right) / 2;
if (a <= middle)
r += query(2 * n, left, middle, a, b);
if (b > middle)
r += query(2 * n + 1, middle + 1, right, a, b);
return r;
}
void update(int n, int left, int right, int a, int b, int v)
{
if (a <= left && right <= b) {
dat[n] += v;
return;
}
int middle = (left + right) / 2;
if (a <= middle)
update(2 * n, left, middle, a, b, v);
if (b > middle)
update(2 * n + 1, middle + 1, right, a, b, v);
dat[n] = dat[n * 2] + dat[n * 2 + 1];
}