#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int arb[100001];
int n,m;
void update(int nod,int st,int dr,int poz,int x,int ok)
{
if (st==dr)
{
if (ok==2)arb[nod]-=x;
else arb[nod]=x;
return;
}
int med=(st+dr)/2;
if (med>=poz)
{
update(2*nod,st,med,poz,x,ok);
}
else
{
update(2*nod+1,med+1,dr,poz,x,ok);
}
int a=0,b=0;
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
int sum=0;
void query(int nod,int st,int dr,int a,int b)
{
if (a<=st && dr<=b)
{
sum+=arb[nod];
return;
}
int med=(st+dr)/2;
if (med<b)
{
query(2*nod+1,med+1,dr,a,b);
}
if (med>=a)
{
query(2*nod,st,med,a,b);
}
}
int main()
{
fin >>n>>m;
for (int i=1; i<=n; i++)
{
int x;
fin >>x;
update(1,1,n,i,x,1);
}
for (int i=1; i<=m; i++)
{
int intr,x,y;
fin >>intr>>x>>y;
if (intr==0)
{
update(1,1,n,x,y,2);
}
else
{
sum=0;
query(1,1,n,x,y);
fout << sum <<"\n";
}
}
}