#include <iostream>
#include <fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int n,m,arb[400005],pos,x,a,b;
void modif(int pos,int x,int st,int dr,int ind)
{
if(st==dr)
{
arb[ind]=x;
return;
}
int mij=(st+dr)/2;
if(pos<=mij)
modif(pos,x,st,mij,ind*2);
else if(pos>mij)
modif(pos,x,mij+1,dr,ind*2+1);
arb[ind]=max(arb[2*ind],arb[2*ind+1]);
}
int afismax(int a,int b,int st,int dr,int ind)
{
if(st>=a && dr<=b)
return arb[ind];
int mij=(st+dr)/2;
if (b<=mij)
return afismax(a, b,st, mij,2 * ind);
if (a>mij)
return afismax(a, b, mij+1, dr, 2 * ind + 1);
return max(afismax(a,b, st, mij, 2 * ind), afismax(a,b,mij+1,dr,2 * ind + 1));
}
int main()
{
f>>n>>m;
int x;
for(int i=1;i<=n;i++)
{
f>>x;
modif(i, x,1, n,1);
}
int c;
for(int i=1;i<=m;i++)
{
f>>c;
if(c==1)
{
f>>pos>>x;
modif(pos,x,1,n,1);
}
else
{
f>>a>>b;
g<<afismax(a,b,1,n,1)<<'\n';
}
}
return 0;
}