#include <fstream>
#define dim 15001
using namespace std;
ifstream f ("datorii.in");
ofstream g ("datorii.out");
int tree[4 * dim + 13];
int N, M;
long long sum;
void Update(int nod, int currL, int currR, int pos, int val) {
if ( currL == currR ) {
tree[nod] -= val;
return;
}
int mid = currL + (currR - currL) / 2;
if ( pos <= mid ) Update(2 * nod, currL, mid, pos, val);
else Update(2 * nod + 1, mid + 1, currR, pos, val);
tree[nod] = tree[2 * nod] + tree[2 * nod + 1];
}
void Query(int nod, int currL, int currR, int queL, int queR) {
if ( queL <= currL && currR <= queR ) {
sum += tree[nod];
return;
}
int mid = currL + (currR - currL) / 2;
if ( queL <= mid ) Query(2 * nod, currL , mid, queL, queR);
if ( mid < queR ) Query(2 * nod + 1, mid + 1, currR, queL, queR);
}
int main() {
int x, a, b;
f >> N >> M;
for (int i = 1; i <= N; i++) {
f >> x;
Update(1, 1, N, i, -x);
}
for ( int i = 1; i <= M; i++ ) {
f >> x >> a >> b;
if ( x == 1 ) {
sum = 0;
Query(1, 1, N, a, b);
g << sum << '\n';
}
else Update(1, 1, N, a, b);
}
}