#include<bits/stdc++.h>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,ans,p,x,y,v[150010];
void update(int nod, int st, int dr, int poz, int x)
{
if(st==dr)
{
v[nod]=x;
return;
}
int mid=(st+dr)>>1;
if(poz<=mid)
update(2*nod, st, mid, poz, x);
else
update(2*nod+1, mid+1, dr, poz, x);
v[nod]=v[2*nod] + v[2*nod+1];
}
void query(int nod,int st, int dr, int a, int b)
{
if(a <= st && dr <= b)
{
ans += v[nod];
return;
}
int mid=(st+dr)>>1;
if(a<=mid)
query(2*nod, st, mid, a, b);
if(b>mid)
query(2*nod+1, mid+1, dr, a, b);
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;++i)
{
f>>x;
update(1, 1, n, i, x);
}
for(int i=1;i<=m;++i)
{
f>>p>>x>>y;
if(!p)
update(1, 1, n, x, y);
else
{
ans=0;
query(1, 1, n, x, y);
g<<ans<<'\n';
}
}
return 0;
}