#include <stdio.h>
#define fr(i,a,b) for(int i=a;i<b;++i)
#define max(a,b) a>b?a:b
#define N 100000
int b[10*N];
int n,m,x,y,z,M;
int u(int p,int l,int r){
int c=(l+r)>>1;
if(l==r){b[p]=z;return 0;}
(y<=c)?u(p<<1,l,c):u(1+(p<<1),c+1,r);
b[p]=max(b[p<<1],b[1+(p<<1)]);
}
int q(int p,int l,int r){
if(y<=l&&r<=z) {M=max(M,b[p]);return 0;}
int c=(l+r)>>1;
if(y<=c) q(p<<1,l,c);
if(c<z) q(1+(p<<1),c+1,r);
}
int up(){--y;u(1,0,n-1);}
int qp(){M=-1;--y;--z;q(1,0,n-1);printf("%i\n",M);}
int main(){
freopen("arbint.in","r",stdin);
freopen("arbint.out","w",stdout);
scanf("%i%i",&n,&m);
fr(i,0,n)scanf("%i",&z),y=i+1,up();
fr(i,0,m) scanf("%i%i%i",&x,&y,&z),x?up():qp();
return 0;
}