#include <iostream>
#include <fstream>
#define DIM 15000
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int A[4 * DIM + 1];
int N, M, op, a, b;
void build(int node, int left, int right)
{
if (left == right)
f >> A[node];
else
{
int mid = (left + right) / 2;
build(node * 2, left, mid);
build(node * 2 + 1, mid + 1, right);
A[node] = A[node * 2] + A[node * 2 + 1];
}
}
void update(int node, int left, int right, int pos, int value)
{
if (left == right)
A[node] -= value;
else
{
int mid = (left + right) / 2;
if (pos <= mid)
update(node * 2, left, mid, pos, value);
if (mid + 1 <= pos)
update(node * 2 + 1, mid + 1, right, pos, value);
A[node] = A[node * 2] + A[node * 2 + 1];
}
}
int query(int node, int left, int right, int a, int b)
{
if (a <= left && right <= b)
return A[node];
else
{
int mid = (left + right) / 2;
if (b <= mid)
return query(node * 2, left, mid, a, b);
if (mid + 1 <= a)
return query(node * 2 + 1, mid + 1, right, a, b);
return query(node * 2, left, mid, a, b) + query(node * 2 + 1, mid + 1, right, a, b);
}
}
int main()
{
f >> N >> M;
build(1, 1, N);
while (M--)
{
f >> op >> a >> b;
if (op == 0)
update(1, 1, N, a, b);
else
g << query(1, 1, N, a, b) << '\n';
}
f.close();
g.close();
return 0;
}