// sursa imprumutata si modificata de la mereu alexandra
#include <fstream>
#include <cmath>
using namespace std;
const int maxN = 1 << ((int)log2(15000) + 2);
int A[maxN];
void update(int l, int r, int i, int p, int v){
if (l == r && p == l){
A[i] += v;
}
else if (p >= l && p <= r)
{
update(l, (l + r) / 2, i * 2, p, v);
update((l + r) / 2 + 1, r, i * 2 + 1, p, v);
A[i] += v;
}
}
int vezi(int l, int r, int a, int b, int i){
if (l >= a && r <= b)
return A[i];
if (r < a || l > b)
return 0;
int S = 0;
S += vezi(l, (l + r) / 2, a, b, i * 2);
S += vezi((l + r) / 2 + 1, r, a, b, i * 2 + 1);
return S;
}
int main(){
ifstream f("datorii.in");
ofstream g("datorii.out");
int n, m, x, y, z, i;
f >> n >> m;
for (i = 1; i <= n; ++i){
f >> x;
update(1, n, 1, i, x);
}
for (i = 0; i < m; ++i){
f >> x >> y >> z;
if (x == 0) {
update(1, n, 1, y, -z);
}
else
g << vezi(1, n, y, z, 1) << "\n";
}
f.close();
g.close();
return 0;
}