#include <bits/stdc++.h>
const int nmax=4e5+3;
using namespace std;
int t[nmax];
void build(int a[],int v,int st,int dr)
{
if(st==dr) t[v]=a[st]; else
{
int mid=(st+dr)/2;
build(a,v*2,st,mid);
build(a,v*2+1,mid+1,dr);
t[v]=max(t[v*2],t[v*2+1]);
}
}
void update(int v,int st,int dr,int pos,int val)
{
if(st==dr) t[v]=val; else
{
int mid=(st+dr)/2;
if(pos<=mid)
update(v*2,st,mid,pos,val); else
update(v*2+1,mid+1,dr,pos,val);
t[v]=max(t[v*2],t[v*2+1]);
}
}
int get_max(int v,int st,int dr,int l,int r)
{
if(st>r || dr<l) return 0;
if(st>=l && dr<=r) return t[v];
int mid=(st+dr)/2;
return max(get_max(v*2,st,mid,l,r),get_max(v*2+1,mid+1,dr,l,r));
}
int main()
{
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
freopen("arbint.in","r",stdin);
freopen("arbint.out","w",stdout);
int n,m;
cin>>n>>m;
int a[n];
for(int i=0;i<n;i++) cin>>a[i];
build(a,1,0,n-1);
for(int i=0;i<m;i++)
{
int k,a,b;
cin>>k>>a>>b;
if(k==1) update(1,0,n-1,a-1,b); else
cout<<get_max(1,0,n-1,a-1,b-1)<<"\n";
}
}