#include<fstream.h>
#include<stdlib.h>
int N,M,a,b,A[200001],i=1,x,mx;
void act(int n,int st,int dr,int i,int x)
{if(st==dr)
A[n]=x;
else
{int m=(st+dr)/2;
if(i<=m)act(2*n,st,m,i,x);
else act(2*n+1,m+1,dr,i,x);
A[n]=A[2*n];
if(A[2*n]<A[2*n+1])A[n]=A[2*n+1];
}
}
void in(int n,int st,int dr)
{if(a<=st&&dr<=b)
{if(mx<A[n])mx=A[n];}
else
{int m=(st+dr)/2;
if(a<=m) in(2*n,st,m);
if(b>m) in(2*n+1,m+1,dr);}
}
int main()
{ifstream f("arbint.in");
ofstream g("arbint.out");
f>>N>>M;
for(;i<=N;++i)
{f>>x;
act(1,1,N,i,x);}
for(i=1;i<=M;++i)
{f>>x>>a>>b;
if(!x)
{mx=-1;
in(1,1,N);
g<<mx<<'\n';}
else
act(1,1,N,a,b);
}
}