#include <bits/stdc++.h>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int n, m;
int v[100000001], s[100000001];
void mt(int i, int p, int q){
if(p==q){
s[i]=v[p];
}else{
int mij=(p+q)/2;
mt(i*2, p, mij);
mt(i*2+1, mij+1, q);
s[i]=max(s[i*2], s[i*2+1]);
}
}
int suma(int i, int p, int q, int a, int b){
if(a<=p && q<=b){
return s[i];
}else{
int mij=(p+q)/2;
int x=0, y=0;
if(a<=mij){
x=suma(i*2, p, mij, a, b);
}
if(mij<b){
y=suma(i*2+1, mij+1, q, a, b);
}
return max(x, y);
}
}
void update(int i, int p, int q, int a, int b){
if(p==q && q==a){
s[i]=b;
}else{
int mij=(p+q)/2;
if(a<=mij){
update(i*2, p, mij, a, b);
}else{
update(i*2+1, mij+1, q, a, b);
}
s[i]=max(s[i*2], s[i*2+1]);
}
}
int main()
{
int i, op, a, b;
fin>>n>>m;
for(i=1;i<=n;++i){
fin>>v[i];
}
mt(1, 1, n);
for(i=1;i<=m;++i){
fin>>op>>a>>b;
if(op==1){
v[a]=b;
update(1, 1, n, a, b);
}else if(op==0){
fout<<suma(1, 1, n, a, b)<<endl;
}
}
return 0;
}