#include <stdio.h>
#include <stdlib.h>
int a,b,maxim,v[100000];
void actualiz(int n, int s, int d, int val, int p){
int m;
if(s==d){
v[n]=val;
}
else {
m=(s+d)/2;
if(p<=m)
actualiz(2*n,s,m,val,p);
else
actualiz(2*n+1,m+1,d,val,p);
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 m;
if(a<=s && b>=d){
if(v[n]>maxim)maxim=v[n];
}
else{
m=(s+d)/2;
if(a<=m)
maxi(2*n,s,m);
if(m+1<=b)
maxi(2*n+1,m+1,d);
}
}
int main()
{
FILE* f,*g;
int i,l,m,x;
f=fopen("arbin.txt","r");
g=fopen("arbout.txt","w");
fscanf(f,"%d%d",&l,&m);
for(i=1;i<=l;i++){
fscanf(f,"%d",&x);
actualiz(1,1,l,x,i);
}
printf("\n%d",v[8]);
printf("\n%d",v[9]);
printf("\n%d",v[5]);
printf("\n%d",v[6]);
printf("\n%d",v[7]);
for(i=1;i<=2*l;i++){
//printf("\n%d %d",v[i],i);
}
for(i=1;i<=m;i++){
fscanf(f,"%d%d%d",&x,&a,&b);
if(x==1){
actualiz(1,1,l,b,a);
}
if(x==0){
maxim=-1;
maxi(1,1,l);
fprintf(g, "%d\n",maxim);
}
}
printf("\n%d",v[8]);
printf("\n%d",v[9]);
printf("\n%d",v[5]);
printf("\n%d",v[6]);
printf("\n%d",v[7]);
}