#include <bits/stdc++.h>
#define mp make_pair
#define pb push_back
#define inf 2000001
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int v[200001],n,m;
inline void actualizare(int nod,int st,int dr,int pos,int val)
{
if(st>=pos && dr<= pos)
{
v[nod] = val;
return ;
}
int m = (st+dr)/2;
if(pos<= m) actualizare(2*nod,st,m,pos,val);
else actualizare(2*nod+1,m+1,dr,pos,val);
if(v[2*nod]>v[2*nod+1])
v[nod]=v[2*nod];
else v[nod]=v[2*nod+1];
}
inline int interogare(int nod,int st,int dr, int a,int b)
{
int v1=0,v2=0;
if(st>=a&&dr<=b)
return v[nod];
int m = (st+dr)/2;
if(a<=m)v1=interogare(2*nod,st,m,a,b);
if(b>m)v2=interogare(2*nod+1,m+1,dr,a,b);
if(v2>v1)v1=v2;
return v1;
}
int main()
{
int i,o,a,b;
f>>n>>m;
for(i=1;i<=n;i++)
{
f>>a;
actualizare(1,1,n,i,a);
}
for(i=1;i<=m;i++)
{
f>>o>>a>>b;
switch(o)
{
case 1:
actualizare(1,1,n,a,b);
break;
case 0:
g<<interogare(1,1,n,a,b)<<'\n';
break;
}
}
}