#include <iostream>
#include <fstream>
#define maxN 15001
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n, m, sum;
int ARB[4*maxN+66];
void Update (int nod, int left, int right, int val, int poz) {
if (left == right) {
if (ARB[nod] + val >=0)
ARB[nod] += val;
else
ARB[nod] = val;
return;
}
int mid = (left+right)/2;
if (poz <= mid)
Update(2*nod, left, mid, val, poz);
else
Update(2*nod+1, mid+1, right, val, poz);
ARB[nod] = ARB[2*nod] + ARB[2*nod+1];
}
void Query (int nod, int left, int right, int a, int b) {
if (a<=left and right <= b) {
sum += ARB[nod];
return;
}
else {
int mid = (left+right)/2;
if (a <= mid)
Query(2*nod, left, mid, a, b);
if (b > mid)
Query(2*nod+1, mid+1, right, a, b);
}
}
int main () {
fin >> n >> m;
for (int i = 1; i <= n; ++i) {
int val;
fin >> val;
Update(1, 1, n, val, i);
}
for (int i = 1; i <= m; ++i) {
int Q;
fin >> Q;
if (Q == 0) {
int dat, poz;
fin >> poz >> dat;
Update(1, 1, n, -dat, poz);
}
else {
int a, b;
sum = 0;
fin >> a >> b;
Query(1, 1, n, a, b);
fout << sum << '\n';
}
}
}