#include<cstdio>
using namespace std;
#define Nmax 15001
int MaxArb[Nmax*4+100];
int Nr[Nmax];
int N, Q, pos, val, start, finish, suma;
void Update(int,int,int);
void Query(int,int,int);
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
int x,A,B;
scanf("%d %d\n",&N,&Q);
for(int i=1;i<=N;i++)
{
scanf("%d ",&x);
Nr[i]=x;
pos=i; val=x;
Update(1,1,N);
}
for(int i=1;i<=N;i++)
{
scanf("%d %d %d\n",&x,&A,&B);
if(x==0)
{
pos=A; val=Nr[A]-B; Nr[A]=val;
Update(1,1,N);
}
else
{
suma=0;
start=A; finish=B;
Query(1,1,N);
printf("%d\n",suma);
}
}
}
void Update(int nod,int left,int right)
{
if(left == right)
{
MaxArb[nod] = val;
return;
}
int mijl= (right + left)/2;
if(pos <= mijl) Update(nod*2, left, mijl);
else Update(nod*2+1, mijl+1, right);
MaxArb[nod]=MaxArb[nod*2]+MaxArb[nod*2+1];
}
void Query(int nod,int left, int right)
{
if( start <= left && right<=finish)
{
suma+=MaxArb[nod];
return;
}
int mijl= (right + left)/2;
if( start <= mijl) Query(nod*2, left, mijl);
if( mijl < finish) Query(nod*2+1, mijl+1, right);
}