#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int arb[1<<19],nod,st,dr,a,b,m,n,em,poz,x,i,op;
void actualizare(int nod,int st,int dr,int ok)
{
if(st>=poz&&dr<=poz)
{
if(!ok) arb[nod]=x;
else arb[nod]-=b;
return;
}
int m=(st+dr)>>1;
if(poz<=m) actualizare(nod<<1,st,m,ok);
else actualizare((nod<<1)+1,m+1,dr,ok);
arb[nod]=arb[nod<<1]+arb[(nod<<1)+1];
}
int interogare(int nod,int st,int dr)
{
if(st>=a&&dr<=b) return arb[nod];
int x1=0,x2=0,m=(st+dr)>>1;
if(a<=m) x1=interogare(nod<<1,st,m);
if(b>m) x2=interogare((nod<<1)+1,m+1,dr);
return x1+x2;
}
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)
{
f>>x;
poz=i;
actualizare(1,1,n,0);
}
for(i=1;i<=m;i++)
{
f>>op>>a>>b;
if(!op)
{
poz=a;
x=b;
actualizare(1,1,n,1);
}
else g<<interogare(1,1,n)<<'\n';
}
return 0;
}