#include <bits/stdc++.h>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int n,m,x[500005];
void adaug(int p,int val,int a,int b,int poz) {
if (a==b) x[poz]=val;
else {
int m=(a+b)/2;
if (p<=m) adaug(p,val,a,m,poz*2);
else adaug(p,val,m+1,b,poz*2+1);
x[poz]=max(x[poz*2],x[poz*2+1]);
}
}
int interog(int st,int dr,int a,int b,int poz) {
if (a<=st && dr<=b) return x[poz];
else {
int m=(st+dr)/2,k=0;
if (a<=m) k=interog(st,m,a,b,poz*2);
if (m<b) k=max(k,interog(m+1,dr,a,b,poz*2+1));
return k;
}
}
void citire() {
int i,j,val,p,a,b;
f>>n>>m;
for (i=1;i<=n;i++) {
f>>val;
adaug(i,val,1,n,1);
}
for (i=1;i<=m;i++) {
f>>p>>a>>b;
if (p==1)
adaug(a,b,1,n,1);
else g<<interog(1,n,a,b,1)<<'\n';
}
}
int main() {
int i,j;
citire();
return 0;
}