#include <stdio.h>
#define N 100005
int t[4*N],n,m;
int a,b,poz,val,sol;
int max(int a,int b){
if(a>b) return a;
return b;
}
void update(int p,int q,int i){
if(p==q){
t[i]=val;
return ;
}
int m=(p+q)>>1;
if(poz<=m) update(p,m,i*2);
else update(m+1,q,i*2+1);
t[i]=max(t[i*2],t[i*2+1]);
}
void caut(int p,int q,int i){
if(a<=p && q<=b){
sol=max(sol,t[i]);
return ;
}
int m=(p+q)>>1;
if(a<=m) caut(p,m,2*i);
if(b>m) caut(m+1,q,2*i+1);
}
int main(){
int i,x,y,z;
freopen("arbint.in","r",stdin);
freopen("arbint.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++){
scanf("%d",&val);
poz=i;//val=v[i];
update(1,n,1);
}
for(i=1;i<=m;i++){
scanf("%d%d%d",&x,&y,&z);
if(x){
poz=y;
val=z;
update(1,n,1);
}
else {
sol=0;
a=y;b=z;
caut(1,n,1);
printf("%d\n",sol);
}
}
return 0;
}