#include <iostream>
#include <fstream>
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
const int N=100005;
const int INF=999999999;
int n,m,t[N*4];
void modific(int p, int a, int b, int poz, int val)
{
if (a == b)
{
t[p] = val;
return;
}
int m = (a + b) / 2;
if (poz <= m)
{
modific(2 * p, a, m, poz, val);
}
else
{
modific(2 * p + 1, m + 1, b, poz, val);
}
t[p] = max(t[2*p], t[2*p+1]);
}
int interogare(int p, int a, int b, int st, int dr)
{
if (st <= a && b <= dr)
{
return t[p];
}
int m = (a + b) / 2, m1, m2;
if (st <= m)
{
m1 = interogare(2*p, a, m, st, dr);
}
else
{
m1 = -INF;
}
if (dr > m)
{
m2 = interogare(2*p+1, m + 1, b, st, dr);
}
else
{
m2 = -INF;
}
return max(m1, m2);
}
int main()
{
int i,x,y,tip,j;
in>>n>>m;
for(i=1; i<=n; i++)
{
in>>x;
modific(1,1,n,i,x);
}
for(i=1; i<=m; i++)
{
in>>tip>>x>>y;
if(tip==0)
{
out<<interogare(1,1,n,x,y)<<'\n';
}
else
modific(1,1,n,x,y);
}
//for(i=1; i<=n; i++)
// out<<t[i]<<" ";
return 0;
}