#include <fstream>
#include <algorithm>
#define NMAX 15000
using namespace std;
int aint[4 * NMAX + 1];
void update( int poz, int val, int st, int dr, int i ) {
if( st == dr ) {
aint[i] += val;
return ;
}
else {
int mid = ( st + dr ) / 2;
if( poz <= mid )
update( poz, val, st, mid, i * 2 );
else
update( poz, val, mid + 1, dr, i * 2 + 1 );
aint[i] = aint[i * 2] + aint[i * 2 + 1];
}
}
int query( int a, int b, int st, int dr, int i ) {
if( a == st && b == dr )
return aint[i];
else {
int mid = ( st + dr ) / 2;
if( b <= mid )
query( a, b, st, mid, i * 2);
else if( a > mid )
query( a, b, mid + 1, dr, i * 2 + 1 );
else
return (query( a, mid, st, mid, i * 2 ) + query( mid + 1, b, mid + 1, dr, i * 2 + 1 ));
}
}
int main() {
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n, m, op, i, a, b;
fin>>n>>m;
for( i = 1; i <= n; i ++ ) {
fin>>a;
update( i, a, 1, n, 1 );
}
for( i = 1; i <= m; i ++ ) {
fin>>op>>a>>b;
if( op == 0 )
update( a, -b, 1, n, 1 );
else
fout<<query( a, b, 1, n, 1 )<<"\n";
}
return 0;
}