#include <fstream>
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
#define int long long
int aint[800001];
int arr[200001];
void build(int node,int st,int dr)
{
if(st==dr)
{
aint[node]=arr[st];
}
else
{
int mid=(st+dr)/2;
build(node*2,st,mid);
build(node*2+1,mid+1,dr);
aint[node]=aint[node*2]+aint[node*2+1];
}
}
void update(int pos,int val,int node,int st,int dr)
{
if(st==dr)
{
aint[node]=val;
}
else
{
int mid=(st+dr)/2;
if(pos<=mid)
{
update(pos,val,node*2,st,mid);
}
else
{
update(pos,val,node*2+1,mid+1,dr);
}
aint[node]=aint[node*2]+aint[node*2+1];
}
}
int query(int a,int b,int node,int st,int dr)
{
if(b<st || a>dr)
{
return 0;
}
if(a<=st && dr<=b)
{
return aint[node];
}
int mid=(st+dr)/2;
int val1=query(a,b,node*2,st,mid);
int val2=query(a,b,node*2+1,mid+1,dr);
return val1+val2;
}
signed main()
{
int n,m,nr1,nr2,nr3;
cin>>n>>m;
for(int i=1; i<=n; i++)
{
cin>>arr[i];
}
build(1,1,n);
for(int i=1; i<=m; i++)
{
cin>>nr1>>nr2>>nr3;
if(nr1==0)
{
update(nr2,arr[nr2]-nr3,1,1,n);
}
else
{
cout<<query(nr2,nr3,1,1,n)<<endl;
}
}
return 0;
}