#include<fstream>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
const int DIM = 15001;
int a,b,t,i,v[DIM],aint[4*DIM],n,q;
void build( int nod, int st , int dr ){
if( st == dr ){
aint[nod] = v[st];
return;
}
int mid = ( st + dr )/2;
build( nod*2,st,mid );
build( nod*2+1,mid+1,dr);
aint[nod] = aint[nod*2] + aint[nod*2+1];
return;
}
void update( int nod, int st, int dr, int x, int p ){
if( dr < p || st > p ){
return;
}
if( st == dr ){
aint[nod] -= x;
return;
}
int mid = ( st + dr )/2;
update( nod*2,st,mid,x,p);
update( nod*2+1,mid+1,dr,x,p);
aint[nod] = aint[nod*2] + aint[nod*2+1];
}
int query( int nod, int st, int dr, int x, int y ){
if( dr < x || st > y ){
return 0;
}
if( x <= st && y >= dr ){
return aint[nod];
}
int mid = ( st + dr )/2;
int stanga = query( nod*2,st,mid,x,y );
int dreapta = query( nod*2+1, mid+1,dr,x,y );
return stanga + dreapta;
}
int main(){
in >> n >> q;
for( i = 1; i <= n; i ++ ){
in >> v[i];
}
build( 1,1,n);
for( i = 1; i <= q; i ++ ){
in >> t >> a >> b;
if( t == 1 ){
out<<query(1,1,n,a,b)<<"\n";
}
if( t == 0 ){
update( 1,1,n,b,a);
}
}
return 0;
}