#include <bits/stdc++.h>
using namespace std;
int ss[400555];
void up(int in,int ii,int st,int dr,int val)
{
if(st==dr)
{
ss[in]=val;
}
else
{
int mij=(st+dr)/2;
if(ii<=mij)
{
up(in*2,ii,st,mij,val);
}
else
{
up(in*2+1,ii,mij+1,dr,val);
}
ss[in]=max(ss[in*2],ss[in*2+1]);
}
}
int qr(int in,int s,int d,int st,int dr)
{
if(d<st || s>dr)
{
return INT_MIN;
}
else if(s>=st && d<=dr)
{
return ss[in];
}
else
{
int mij=(s+d)/2;
return max(qr(in*2,s,mij,st,dr),qr(in*2+1,mij+1,d,st,dr));
}
}
int main()
{
ifstream cin("arbint.in");
ofstream cout("arbint.out");
int n,m,c,a,b;
cin>>n>>m;
for(int i=1;i<=400000;++i)
{
ss[i]=INT_MIN;
}
for(int i=1;i<=n;++i)
{
cin>>a;
up(1,i,1,n,a);
}
for(int i=1;i<=m;++i)
{
cin>>c>>a>>b;
if(c==0)
{
cout<<qr(1,1,n,a,b)<<"\n";
}
else
{
up(1,a,1,n,b);
}
}
return 0;
}