#include<stdio.h>
#define dim 100001
#define max(a,b) ((a)>(b)?(a):(b))
int n,m,x,i,maxi,v[dim*3];
void update(int nod,int st,int dr){
if(st>=dr){
v[nod]=x;
return;
}
int mid=(st+dr)/2;
if(i<=mid) update(nod*2,st,mid);
else update(nod*2+1,mid+1,dr);
v[nod]=max(v[nod*2],v[nod*2+1]);
}
void maxim(int nod,int st,int dr){
if(i<=st && dr<=x){
if(maxi<v[nod]) maxi=v[nod];
return;
}
int mid=(st+dr)/2;
if(i<=mid) maxim(nod*2,st,mid);
if(mid<x) maxim(nod*2+1,mid+1,dr);
}
int main(){
int op,j;
freopen("arbint.in","r",stdin);
freopen("arbint.out","w",stdin);
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++){
scanf("%d",&x);
update(1,1,n);
}
for(j=1;j<=m;j++){
scanf("%d %d %d",&op,&i,&x);
if(!op){
maxi=0;
maxim(1,1,n);
printf("%d\n",maxi);
}else{
update(1,1,n);
}
}
return 0;
}