#include<stdio.h>
#include<iostream>
//#define dim 100001;
using namespace std;
int a,b,c,x,m,n,f,h;
int ar [4 * 100001 + 66 ];
void update (int nod,int ext_s,int ext_d,int val,int pos_val){
if(ext_s == ext_d){
ar[nod]=val;
return;
}
int div=(ext_s+ext_d)/2;
if(pos_val <= div)
update(2*nod,ext_s,div,val,pos_val);
else
update(2*nod+1,div+1,ext_d,val,pos_val);
ar[nod]=max(ar[2*nod],ar[2*nod+1]);
}
void question (int nod,int ext_s,int ext_d,int pos_i,int pos_f,int h){
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,pos_i,pos_f,h);
if(div < pos_f)
question(2*nod+1,div+1,ext_d,pos_i,pos_f,h);
}
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);
update(1,1,n,f,i);
}
for(int i = 1 ; i <= m ; i++){
scanf("%d%d%d",&x,&a,&b);
if( x == 1)
update(1,1,n,b,a);
else{
h=-1;
question(1,1,n,a,b,h);
printf("%d\n",h);
}
}
return 0;
}