#include <fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int v[400010],mx[400010];
void insert(int a,int i,int j,int x,int p){
if(i==j){
v[a]=mx[a]=x;
return;
}
int m=(i+j)/2;
if(p>m) insert(a*2+1,m+1,j,x,p);
else insert(a*2,i,m,x,p);
mx[a]=mx[a*2];
if(mx[a*2+1]>mx[a]) mx[a]=mx[a*2+1];
return;
}
int query(int a,int i,int j,int x,int y){
if(x==i&&y==j)
return mx[a];
int m=(i+j)/2,a1=0,a2=0;
if(x<=m) a1=query(a*2,i,m,x,(m<y ? m : y));
if(y>m) a2=query(a*2+1,m+1,j,(x>m+1 ? x : m+1),y);
int mx=a1;
if(a2>mx) mx=a2;
return mx;
}
int main()
{
int n,m;
f>>n>>m;
for(int i=1;i<=n;i++){
int x;
f>>x;
insert(1,1,n,x,i);
}
for(int i=1;i<=m;i++){
int cd,x,y;
f>>cd>>x>>y;
if(cd)
insert(1,1,n,y,x);
else
g<<query(1,1,n,x,y)<<'\n';
}
return 0;
}