#include <bits/stdc++.h>
using namespace std;
int n,m;
int ai[500001];
int val;
int query(int x, int y, int a, int b,int o){
if (x<=a&&y>=b) return ai[o];
int m=(a+b)/2,mx=0;
if (x<=m) mx=query(x,y,a,m,o*2);
if (m<y) mx=max(mx,query(x,y,m+1,b,o*2+1));
return mx;
}
void add(int p,int a, int b, int o){
if (a==b) ai[o]=val;
else{
int m=(a+b)/2;
if (p<=m) add(p,a,m,o*2);
else add(p,m+1,b,o*2+1);
ai[o]=max(ai[o*2],ai[o*2+1]);
}
}
void read(){
int i,x;
scanf("%d%d",&n,&m);
for (i=1;i<=n;i++) {
scanf("%d",&val);
add(i,1,n,1);
}
}
int main()
{
int i,p,x,y;
freopen("arbint.in","r",stdin);
freopen("arbint.out","w",stdout);
read();
for (i=1;i<=m;i++){
scanf("%d%d%d",&p,&x,&y);
if (p==1){
val=y;
add(x,1,n,1);
}
else{
printf("%d\n",query(x,y,1,n,1));
}
}
return 0;
}