#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(2 * nod, st, med);
build(2 * nod + 1, med + 1, dr);
aint[nod] = aint[2 * nod] + aint[2 * nod + 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(2 * nod, st, med, a, b);
else
update(2 * nod + 1, med + 1, dr, a, b);
aint[nod] = aint[2 * nod] + aint[2 * nod + 1];
}
void query( int nod, int st, int dr, int a, int b ){
if( a <= st && dr <= b ){
s += aint[nod];
return;
}
int med = (st + dr) >> 1;
if( a <= med )
query(2 * nod, st, med, a, b);
else
query(2 * nod + 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;
}