#include <cstdio>
#define N 15005
using namespace std;
int n,m,c,i,x,y,arb[4*N+50];
void update( int nod, int L, int R, int poz, int val )
{
int mij;
if ( L == R ) {arb[ nod ] -= val; return;}
else {
mij = (L+R) / 2;
if ( poz <= mij ) update ( 2*nod, L, mij, poz, val );
else update ( 2*nod+1, mij+1, R, poz, val );
arb[ nod ] = arb[ 2 * nod ] + arb[ 2 * nod + 1 ];
}
}
int query ( int nod, int L, int R, int start, int finish )
{
int mij, rez1=-1, rez2=-1;
if ( start<= L && R<=finish ) return arb [nod];
mij= (L+R)/2;
if ( start<= mij ) rez1= query ( 2*nod, L, mij, start, finish );
if ( mij < finish ) rez2 = query( 2*nod+1, mij+1, R, start, finish );
return rez1+rez2;
}
int main()
{
freopen ( "datorii.in", "r", stdin );
freopen ( "datorii.out", "w", stdout );
scanf ("%d%d", &n, &m );
for ( i=1; i<=n; i++)
{
scanf ( "%d", &x);
update( 1,1,n, i,-x );
}
for ( ; m; m-- )
{
scanf ("%d%d%d", &c, &x, &y);
if ( c )
printf ("%d\n", query (1,1,n,x,y) );
else
update (1,1,n,x,y);
}
return 0;
}