#include<stdio.h>
#include<iostream>
//#define dim 100001;
using namespace std;
int a,b,c,x,m,n,f;
int h,pos_i,pos_f,pos_h;
int ar [4 * 10000001 + 66 ];
void update (int nod,int ext_s,int ext_d){
if(ext_s == ext_d){
ar[nod]=h;
return;
}
int div=(ext_s+ext_d)/2;
if(pos_h <= div)
update(2*nod,ext_s,div);
else
update(2*nod+1,div+1,ext_d);
ar[nod]=max(ar[2*nod],ar[2*nod+1]);
}
void question (int nod,int ext_s,int ext_d){
if(pos_i <= ext_s && ext_d <= pos_f)
if( h <= ar[nod]){
h=ar[nod];
return;
}
int div = (ext_s+ext_d)/2;
if(pos_i <= div)
question(2*nod,ext_s,div);
if(div < pos_f)
question(2*nod+1,div+1,ext_d);
}
int main(){
freopen("arbint.in","rt",stdin);
freopen("arbint.out","wt",stdout);
scanf("%d %d",&n,&m);
for(int i = 1; i <= n ; i++){
scanf("%d",&f);
h=f;
pos_h=i;
update(1,1,n);
}
for(int i = 1 ; i <= m ; i++){
scanf("%d%d%d",&x,&a,&b);
if( x == 1){
pos_h=a;
h=b;
update(1,1,n);
}
else{
h=-1;
pos_i=a;
pos_f=b;
question(1,1,n);
printf("%d\n",h);
}
}
return 0;
}