#include <stdio.h>
FILE *fin = fopen("datorii.in", "r");
FILE *fout = fopen("datorii.out", "w");
int datorie[ 30001];
void actualizareArbore ( int li, int ls, int poz, int val, int i )
{
if ( li == ls )
datorie[i] += val;
else
{
int mij = (li + ls) / 2;
if( poz <= mij )
actualizareArbore( li, mij, poz, val, 2*i );
else
actualizareArbore( mij + 1, ls, poz, val, 2*i+1 );
datorie[i] = datorie[2*i] + datorie[2*i+1] ;
}
}
int afisareDatorie ( int li, int ls, int a, int b, int i )
{
int nr = 0;
if ( a <= li && ls <= b)
return datorie[i] ;
else
{
if ( a <= ls && li != ls)
nr = afisareDatorie( ((li + ls) / 2) + 1 , ls, a, b, 2*i+1 );
if ( li <= b && li != ls)
nr += afisareDatorie( li, (li + ls) / 2, a, b, 2*i );
return nr;
}
}
int main()
{
int n, m, op, t, v;
fscanf (fin, "%d %d", &n, &m);
for(int i = 1; i <= n; i++)
{
fscanf (fin, "%d", &v);
actualizareArbore ( 1, n, i, v, 1) ;
}
for(int i = 1; i <= m ; i++)
{
fscanf( fin, "%d %d %d", &op, &t, &v);
if ( op == 0 )
actualizareArbore ( 1, n, t, -v, 1);
else
fprintf( fout, "%d\n", afisareDatorie( 1, n, t, v, 1));
}
fclose(fin);
fclose(fout);
return 0;
}