#include <fstream>
#include <iostream>
#define MAXN 100000
using namespace std;
int a[MAXN], aint[4*MAXN];
int ans;
void init( int nod, int l, int r ) {
if( l == r )
aint[nod] = a[r];
else {
init( nod*2+1, l, (l+r)/2 );
init( nod*2+2, (l+r)/2+1, r );
aint[nod] = aint[nod*2+1] + aint[nod*2+2];
}
}
void update( int nod, int l, int r, int poz ) {
if( poz < l || poz > r )
return;
if( l == r )
aint[nod] = a[r];
else {
update( nod*2+1, l, (l+r)/2, poz );
update( nod*2+2, (l+r)/2+1, r, poz );
aint[nod] = aint[nod*2+1] + aint[nod*2+2];
}
}
void query( int nod, int l, int r, int lq, int rq ) {
if( r < lq || l > rq )
return;
else if( r <= rq && l >= lq )
ans += aint[nod];
else {
query( nod*2+1, l, (l+r)/2, lq, rq );
query( nod*2+2, (l+r)/2+1, r, lq, rq );
}
}
int main() {
int n, m, i, p, q, t;
ifstream cin("datorii.in");
ofstream cout ("datorii.out");
cin >> n >> m;
for( i = 0; i < n; i++ )
cin >> a[i];
init( 0, 0, n-1 );
for( i = 0; i < m; i++ ) {
cin >> t >> p >> q;
if( t == 0 ) {
a[p-1] -= q;
update( 0, 0, n-1, p-1 );
} else {
ans = 0;
query( 0, 0, n-1, p-1, q-1 );
cout << ans << "\n";
}
}
return 0;
}