/*
* File: main.cpp
* Author: bitone
*
* Created on August 20, 2010, 2:05 PM
*/
#include <fstream>
#include <cstdlib>
#define MAX_N 4*100000+11
using namespace std;
/*
*
*/
typedef signed int sint;
sint A[MAX_N];
inline void UpDate( sint i, sint left, sint right, sint x, sint xpoz )
{
if( left == right )
{
A[i]=x;
return;
}
sint middle=left+(right-left)/2;
if( xpoz <= middle )
UpDate( 2*i, left, middle, x, xpoz );
else UpDate( 2*i+1, middle+1, right, x, xpoz );
A[i]=( A[2*i] >= A[2*i+1] ? A[2*i] : A[2*i+1] );
}
inline sint Query( sint i, sint left, sint right, sint a, sint b )
{
if( left >= a && right <= b )
return A[i];
sint q1=0, q2=0, middle=left+(right-left)/2;
if( a <= middle )
q1=Query( 2*i, left, middle, a, b );
if( b > middle )
q2=Query( 2*i+1, middle+1, right, a, b );
return ( q1 >= q2 ? q1 : q2 );
}
int main( void )
{
sint N, M, i, x;
ifstream in( "arbint.in" );
in>>N>>M;
for( i=1; i <= N; ++i )
{
in>>x;
UpDate( 1, 1, N, x, i );
}
ofstream out( "arbint.out" );
for( ; M; --M )
{
in>>i;
if( i )
{
in>>i>>x;
UpDate( 1, 1, N, x, i );
}
else {
in>>i>>x;
out<<Query( 1, 1, N, i, x )<<'\n';
}
}
return EXIT_SUCCESS;
}