#include <bits/stdc++.h>
using namespace std;
int mx[500055];
void up(int l,int r,int e,int in,int el)
{
int mij;
mij=(l+r)/2;
if(l==r)
{
mx[in]=el;
}
else
{
if(e>=l && e<=mij)
{
up(l,mij,e,in*2,el);
}
else
{
up(mij+1,r,e,in*2+1,el);
}
mx[in]=max(mx[in*2],mx[in*2+1]);
}
}
int mxx=0;
void nr(int l,int r,int s,int d,int in)
{
if(l>=s && r<=d)
{
if(mx[in]>mxx)
{
mxx=mx[in];
}
}
else
{
int mij=(l+r)/2;
if(s<=mij)
{
nr(l,mij,s,d,in*2);
}
if(mij+1<=d)
{
nr(mij+1,r,s,d,in*2+1);
}
}
}
int main()
{
ifstream cin("arbint.in");
ofstream cout("arbint.out");
int n,m,x;
cin>>n>>m;
for(int i=1;i<=n;++i)
{
cin>>x;
up(1,n,i,1,x);
}
int caz,aa,bb;
for(int i=1;i<=m;++i)
{
cin>>caz;
if(caz==0)
{
cin>>aa>>bb;
mxx=0;
nr(1,n,aa,bb,1);
cout<<mxx<<"\n";
}
else
{
cin>>aa>>bb;
up(1,n,aa,1,bb);
}
}
return 0;
}