#include <fstream>
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
const int dim = 100001;
int arb[4 * dim];
void update(int nod, int l, int r, int poz, int val)
{
if (l == r)
arb[nod] += val;
else
{
int mid = (l + r) >> 1;
if (poz <= mid)
update(2 * nod, l, mid, poz, val);
else
update(2 * nod + 1, mid + 1, r, poz, val);
arb[nod] = arb[nod * 2] + arb[nod * 2 + 1];
}
}
int query(int nod, int l, int r, int a, int b)
{
if (l >= a && r <= b)
return arb[nod];
else
{
int mid = (l + r) >> 1;
int sum = 0;
if (a <= mid)
sum = query(2 * nod, l, mid, a, b);
if (b > mid)
sum += query(2 * nod + 1, mid + 1, r, a, b);
return sum;
}
}
void build(int nod, int l, int r)
{
if (l == r)
cin >> arb[nod];
else
{
int mid = (l + r) >> 1;
build(nod * 2, l, mid);
build(nod * 2 + 1, mid + 1, r);
arb[nod] = arb[nod * 2] + arb[nod * 2 + 1];
}
}
int main()
{
int n, m, i, op, a, b;
cin >> n >> m;
build(1, 1, n);
for (i = 1; i <= m; ++i)
{
cin >> op >> a >> b;
if (op == 0)
update(1, 1, n, a, -b);
else cout << query(1, 1, n, a, b) << '\n';
}
return 0;
}