#include <fstream>
using namespace std;
ifstream fin( "datorii.in" );
ofstream fout( "datorii.out" );
int aint[4 * 15000 + 2], v[15000 + 2];
int s;
void build( int nod, int st, int dr ){
if( st == dr ){
aint[nod] = v[st];
return;
}
int med = (st + dr) >> 1;
build( nod * 2, st, med );
build( nod * 2 + 1, med + 1, dr );
aint[nod] = aint[nod * 2] + aint[nod * 2 + 1];
}
void update( int nod, int st, int dr, int a, int b ){
if( st == dr ){
aint[nod] -= b;
return;
}
int med = (st + dr) >> 1;
if( a <= med )
update( nod * 2, st, med, a, b );
else
update( nod * 2 + 1, med + 1, dr, a, b );
aint[nod] = aint[nod * 2] + aint[nod * 2 + 1];
}
void query( int nod, int st, int dr, int a, int b ){
if( a <= st && dr <= b ){
s = s + aint[nod];
return;
}
int med = (st + dr) >> 1;
if( a <= med )
query( nod * 2, st, med, a, b );
if( b > med )
query( nod * 2 + 1, med + 1, dr, a, b );
}
int main() {
int n, m, x, y, d, i;
fin >> n >> m;
for( i = 1; i <= n; ++i )
fin >> v[i];
build(1, 1, n);
for( i = 1; i <= m; ++i ){
fin >> d >> x >> y;
s = 0;
if( d == 0 )
update( 1, 1, n, x, y );
else{
query( 1, 1, n, x, y );
fout << s << "\n";
}
}
return 0;
}