#include <stdio.h>
#define dim 15001
int N, T[dim<<1], A[dim];
long M;
void update( int, int, int, int, int );
long querry( int, int, int, int, int );
int main()
{
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d %ld", &N, &M);
long i;
int day, value, c, a, b;
for(i=1; i<=N; ++i)
{
scanf("%d", A+i);
update(1, A[i], i, 1, N);
}
for(i=1; i<=M; ++i)
{
scanf("%d", &c);
if( !c )
{
scanf("%d %d", &day, &value);
A[day] -= value;
update(1, -value, day, 1, N);
}
else
{
scanf("%d %d", &a, &b);
printf("%ld\n", querry(1, a, b, 1, N));
}
}
fclose(stdin);
fclose(stdout);
return 0;
}
void update( int v, int value, int day, int l, int r )
{
if( l != r )
{
T[v] += value;
int m = (l+r) >> 1;
if( day <= m )
update(v<<1, value, day, l, m);
if( day > m )
update((v<<1)+1, value, day, m+1, r);
}
}
long querry( int v, int a, int b, int l, int r )
{
long t = 0; int m;
if( l >= a && r <= b )
{
if( l == r )
t += A[l];
else
t += T[v];
return t;
}
else
{
m = (l+r) >> 1;
if( a <= m )
t += querry(v<<1, a, b, l, m);
if( b > m )
t += querry((v<<1)+1, a, b, m+1, r);
return t;
}
}