#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int b[10000000];
int a[100010],n,m,i,c,x,y;
void creare_arb(int l, int r, int p)
{
if (l==r) b[p]=a[l];
else
{
int mij=(l+r)/2;
creare_arb(l,mij,p*2);
creare_arb(mij+1,r,p*2+1);
b[p]=max(b[p*2],b[p*2+1]);
}
}
int maxim(int l, int r, int p, int x, int y)
{
if (l==x && r==y) return b[p];
else
{
int mij=(l+r)/2;
if (y<=mij) return maxim(l,mij,p*2,x,y);
else if (x>mij)return maxim(mij+1,r,p*2+1,x,y);
else return max(maxim(l,mij,p*2,x,mij),maxim(mij+1,r,p*2+1,mij+1,y));
}
}
void modifica(int l, int r, int p, int x, int val)
{
if (l==r && l==x) b[p]=val;
else
{
int mij=(l+r)/2;
if (x<=mij) modifica(l,mij,p*2,x,val);
else modifica(mij+1,r,p*2+1,x,val);
b[p]=max(b[2*p],b[2*p+1]);
}
}
int main()
{
f >> n >> m;
for (i=1; i<=n; i++)
f >> a[i];
creare_arb(1,n,1);
for (i=m;i--;)
{
f >> c >> x >>y;
if (c==0) g << maxim(1,n,1,x,y) << "\n";
else
modifica(1,n,1,x,y);
}
}