#include <stdio.h>
using namespace std;
FILE*fin = fopen("datorii.in" , "r");
FILE *fout = fopen("datorii.out" , "w");
#define MAXN 450000
int ArbPlata [MAXN];
int val , pos , start , finish , suma;
void updateplus (int nod, int st ,int dr)
{
if(st == dr)
{
ArbPlata[nod] += val;
return;
}
else
{
int mij = (st + dr) / 2;
if(pos <= mij) updateplus(2 * nod, st , mij);
else updateplus(2 * nod + 1, mij + 1, dr);
ArbPlata[nod] = ArbPlata[2 * nod] + ArbPlata[2 * nod + 1];
}
}
void updateminus (int nod, int st ,int dr)
{
if(st == dr)
{
ArbPlata[nod] -= val;
return;
}
else
{
int mij = (st + dr) / 2;
if(pos <= mij) updateminus(2 * nod, st , mij);
else updateminus(2 * nod + 1, mij + 1, dr);
ArbPlata[nod] = ArbPlata[2 * nod] + ArbPlata[2 * nod + 1];
}
}
void interogare(int nod ,int st ,int dr)
{
if(start <= st && dr <= finish)
{
suma+=ArbPlata[nod];
}
else
{
int mij = (st + dr) / 2;
if(start <= mij) interogare(2 * nod , st , mij);
if(finish > mij) interogare(2 * nod + 1 , mij + 1 , dr);
}
}
int main()
{
int a , b , tip , n , m ,x;
fscanf(fin , "%d%d", &n, &m);
for(int i = 1; i <= n; i ++)
{
fscanf(fin , "%d" , &x);
pos = i;
val = x;
updateplus(1,1,n);
}
for(int i = 1; i <= m; i ++)
{
fscanf(fin , "%d%d%d" , &tip , &a , &b);
if(tip == 0)
{
pos = a;
val = b;
updateminus(1,1,n);
}
else
{
start = a;
finish = b;
suma = 0;
interogare(1,1,n);
fprintf(fout , "%d\n" , suma);
}
}
return 0;
}