#include <stdio.h>
#include <stdlib.h>
int a,b,maxim,val,p,v[400000];
void actualiz(int n, int s, int d){
int mij;
if(s==d){
v[n]=val;
}
else {
mij=(s+d)/2;
if(p<=mij)
actualiz(2*n,s,mij);
else
actualiz(2*n+1,mij+1,d);
if(v[2*n]>v[2*n+1])v[n]=v[2*n];
else v[n]=v[2*n+1];
}
}
void maxi(int n, int s, int d){
int mij;
if(a<=s && b>=d){
if(v[n]>maxim)maxim=v[n];
}
else{
mij=(s+d)/2;
if(a<=mij)
maxi(2*n,s,mij);
if(mij+1<=b)
maxi(2*n+1,mij+1,d);
}
}
int main()
{
FILE* f,*g;
int i,l,m,x;
f=fopen("arbint.in","r");
g=fopen("arbint.out","w");
fscanf(f,"%d%d",&l,&m);
for(i=1;i<=l;i++){
fscanf(f,"%d",&x);
p=i;
val=x;
actualiz(1,1,l);
}
for(i=1;i<=m;i++){
fscanf(f,"%d%d%d",&x,&a,&b);
if(x==1){
p=a;
val=b;
actualiz(1,1,l);
}
if(x==0){
maxim=-1;
maxi(1,1,l);
fprintf(g, "%d\n",maxim);
}
}
return 0;
}