#include <cstdio>
using namespace std;
#define MAX_N (1 << 15)
int T[MAX_N];
int S, N, M, Op;
void Query(int n, int a, int b, int st, int dr)
{
if(a >= st && b <= dr)
S += T[n];
else if(a != b)
{
int m = (a + b) >> 1;
if(m >= a)
Query(n<<1, a, m, st, dr);
if(m + 1 <= b)
Query((n<<1)+1, m+1, b, st, dr);
}
}
void Update(int n, int a, int b, int x, int v)
{
T[n] -= v;
if(a != b)
{
int m = (a + b) >> 1;
if(a <= m && x >= a && x <= m)
Update(n<<1, a, m, x, v);
else if(m + 1 <= b)
Update((n<<1)+1, m+1, b, x, v);
}
}
int main()
{
freopen("datorii.in", "rt", stdin);
freopen("datorii.out", "wt", stdout);
int i, a, b;
for ( scanf("%d %d", &N, &M), i = 1; i <= N; ++i )
{
scanf("%d", &Op);
Update(1, 1, N, i, -Op);
}
for ( i = 1; i <= M; ++i )
{
scanf("%d %d %d", &Op, &a, &b);
if(Op == 0) // achit b din valoarea zilei a
Update(1, 1, N, a, b);
else // interogare: a, a+1, ..., b-1, b
{
S = 0;
Query(1, 1, N, a, b);
printf("%d\n", S);
}
}
fclose(stdin);
fclose(stdout);
return 0;
}