#include <iostream>
#define MAX_N 100100
#define FIN "arbint.in"
#define FOUT "arbint.out"
using namespace std;
int arb[4*MAX_N+1];
int v[MAX_N+1],maxim,n,m,a,b;
void get_max(int p,int u,int nr){
if (a<=p && u<=b){
maxim=max(maxim,arb[nr]);
} else {
int m=(p+u)/2;
if (a<=m){get_max(p,m,2*nr);}
if (b>m){get_max(m+1,u,2*nr+1);}
}
}
void modify(int a,int p,int u,int nr){
if (p==u){
arb[nr]=b;} else {
int m=(p+u)/2;
if (a<=m){modify(a,p,m,2*nr);} else{
modify(a,m+1,u,2*nr+1);}
arb[nr]=max(arb[2*nr],arb[2*nr+1]);
}
}
void iofile(void){
freopen(FIN,"rt",stdin);
freopen(FOUT,"wt",stdout);
scanf("%d%d",&n,&m);
int x;
for (int a=1;a<=n;a++){
scanf("%d",&b);
modify(a,1,n,1);
}
for (int i=1;i<=m;i++){
scanf("%d%d%d",&x,&a,&b);
if (x){
modify(a,1,n,1);} else {
maxim=0;
get_max(1,n,1);
printf("%d\n",maxim);
}
}
fclose(stdin);
fclose(stdout);
}
int main(void){
iofile();
return 0;
}