#include<bits/stdc++.h>
#define lowbit(x) x&(-x)
#define int long long
using namespace std;
int n,m;
int num[10000005];
struct mode{
int l,r,v;
}a[40000005];
void build(int id,int l,int r){
a[id].l=l;
a[id].r=r;
if(l==r){
a[id].v=num[l];
return;
}
int mid=l+r>>1;
build(id*2,l,mid);
build(id*2+1,mid+1,r);
a[id].v=a[id*2].v+a[id*2+1].v;
return;
}
void up(int id,int k,int v){
int l=a[id].l;
int r=a[id].r;
if(l==r){
a[id].v=v;
return;
}
int mid=l+r>>1;
if(mid>k)up(id*2,k,v);
else if(mid<k)up(id*2+1,k,v);
a[id].v=a[id*2].v+a[id*2+1].v;
return;
}
int ask(int id,int tgl,int tgr){
int l=a[id].l;
int r=a[id].r;
if(tgl<=l&&r<=tgr)return a[id].v;
int mid=l+r>>1;
if(tgr<=mid)return ask(id*2,tgl,tgr);
else if(tgl>=mid)return ask(id*2+1,tgl,tgr);
return ask(id*2,tgl,tgr)+ask(id*2+1,tgl,tgr);
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>num[i];
build(1,1,n);
while(m--){
int o,x,y;
cin>>o>>x>>y;
if(o==1){
up(1,x,y);
}
else{
int k=ask(1,x,y);
cout<<k<<"\n";
}
}
return 0;
}