# include <iostream>
# include <fstream>
using namespace std;
# define MAX_N 15000
int aint[4 * MAX_N];
int v[1 + MAX_N];
void update( int pos, int val, int b, int e, int t ) {
if ( b == e )
aint[t] = val;
else {
int m = ( b + e ) / 2;
if ( pos <= m )
update( pos, val, b, m, t * 2 + 1 );
else
update( pos, val, m + 1, e, t * 2 + 2 );
aint[t] = aint[t * 2 + 1] + aint[t * 2 + 2];
}
}
int query( int l, int r, int b, int e, int t ) {
if ( l == b && r == e )
return aint[t];
else {
int m = ( b + e ) / 2;
if ( r <= m )
return query( l, r, b, m, t * 2 + 1 );
else if ( l > m )
return query( l, r, m + 1, e, t * 2 + 2 );
else
return query( l, m, b, m, t * 2 + 1 )
+ query( m + 1, r, m + 1, e, t * 2 + 2 );
}
}
int main() {
ifstream fin( "datorii.in" );
ofstream fout( "datorii.out" );
int n, m, i, c, a, b;
fin >> n >> m;
for ( i = 1; i <= n; i ++ ) {
fin >> v[i];
update( i, v[i], 1, n, 0 );
}
for ( i = 0; i < m; i ++ ) {
fin >> c >> a >> b;
if ( c == 0 )
update( a, v[a] -= b, 1, n, 0 );
else
fout << query( a, b, 1, n, 0 ) << '\n';
}
fin.close();
fout.close();
return 0;
}