#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int N, M, S[15001], A[60004];
void preprocess(int pos, int left, int right)
{
if (left == right)
{
A[pos] = S[left];
return;
}
int middle = (left + right) / 2;
preprocess(pos * 2, left, middle);
preprocess(pos * 2 + 1, middle + 1, right);
A[pos] = A[pos * 2] + A[pos * 2 + 1];
}
void update(int pos, int left, int right, int a)
{
if (a < left || right < a)
return;
if (left == right)
{
A[pos] = S[left];
return;
}
int middle = (left + right) / 2;
update(pos * 2, left, middle, a);
update(pos * 2 + 1, middle + 1, right, a);
A[pos] = A[pos * 2] + A[pos * 2 + 1];
}
int query(int pos, int left, int right, int a, int b)
{
if (b < left || right < a)
return 0;
if (a <= left && right <= b)
return A[pos];
int middle = (left + right) / 2;
return query(pos * 2, left, middle, a, b) + query(pos * 2 + 1, middle + 1, right, a, b);
}
int main()
{
fin >> N >> M;
for (int i = 1; i <= N; i++)
{
fin >> S[i];
}
preprocess(1, 1, N);
for (int i = 1; i <= M; i++)
{
int Opt;
fin >> Opt;
switch (Opt)
{
case 0:
{
int T, V;
fin >> T >> V;
S[T] -= V;
update(1, 1, N, T);
break;
}
case 1:
{
int P, Q;
fin >> P >> Q;
fout << query(1, 1, N, P, Q) << '\n';
break;
}
}
}
}