#include <fstream>
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
const int nmax = 15000;
int n, m, aint[nmax * 4];
void act(int curr_node, int loc_left, int loc_right, int left, int right, int val) {
if (left <= loc_left && loc_right <= right)
aint[curr_node] += val;
else {
int mid = (loc_left + loc_right) / 2;
if (left <= mid)
act(curr_node * 2, loc_left, mid, left, right, val);
if (mid < right)
act(curr_node * 2 + 1, mid + 1, loc_right, left, right, val);
aint[curr_node] = aint[curr_node * 2] + aint[curr_node * 2 + 1];
}
}
int querry(int curr_node, int loc_left, int loc_right, int left, int right) {
if (left <= loc_left && loc_right <= right)
return aint[curr_node];
else {
int ans = 0, mid = (loc_left + loc_right) / 2;
if (left <= mid)
ans += querry(curr_node * 2, loc_left, mid, left, right);
if (mid < right)
ans += querry(curr_node * 2 + 1, mid + 1, loc_right, left, right);
return ans;
}
}
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) {
int elem;
cin >> elem;
act(1, 1, n, i, i, elem);
}
for (int i = 1; i <= m; i++) {
int q, a, b;
cin >> q >> a >> b;
if (q == 0)
act(1, 1, n, a, a, -b);
else
cout << querry(1, 1, n, a, b) << "\n";
}
}