#include <iostream>
#include <fstream>
#include <stdio.h>
#include <cmath>
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
const int MAXN = 100000;
const int MAXA = MAXN * 2;
int a[MAXA];
int size_a;
int v[MAXN];
void arbore( int left, int right, int nodeIndex ){
if( left == right ){
a[nodeIndex] = v[left];
//cout<<nodeIndex<<" "<<left<<" "<<v[left]<<'\n';
return;
}
int mid, leftChild, rightChild;
//cout<<"ininte: "<<left<<" "<<mid<<" "<<right<<'\n';
mid = ( right + left ) / 2;
leftChild = nodeIndex + 1;
rightChild = nodeIndex + ( mid - left + 1) * 2;
//cout<<"dupa: "<<left<<" "<<mid<<" "<<right<<'\n';
arbore(left, mid, leftChild);
arbore(mid + 1, right, rightChild);
a[nodeIndex] = max(a[rightChild], a[leftChild]);
//cout<<"maxim: "<<a[nodeIndex]<<" "<<nodeIndex<<'\n';
}
int query( int indexNode, int left, int right, int index1, int index2 ){
if( left >= index1 && index2 >= right ){
//out<<indexNode<<'\n';
return a[indexNode];
}
int maxim;
int mid, leftChild, rightChild;
mid = ( left + right ) / 2;
leftChild = indexNode + 1;
rightChild = indexNode + ( mid - left + 1) * 2;
//cout<<left<<" "<<mid<<" "<<right<<'\n';
maxim = -1;
if(index1 <= mid)
maxim = max( maxim, query(leftChild, left, mid, index1, index2));
if( index2 > mid )
maxim = max( maxim, query(rightChild, mid + 1, right, index1, index2));
return maxim;
}
void update( int indexNode, int left, int right, int poz, int val ){
if( left == right ){
//cout<<a[indexNode]<<" "<<indexNode<<'\n';
a[indexNode] = val;
return;
}
int mid, leftChild, rightChild;
mid = ( left + right ) / 2;
leftChild = indexNode + 1;
rightChild = indexNode + ( mid - left + 1) * 2;
if( poz <= mid )
update( leftChild, left, mid, poz, val);
else
update( rightChild, mid + 1, right, poz, val);
a[indexNode] = max(a[rightChild], a[leftChild]);
}
int main(){
int n, m, i, c, a, b;
in>>n>>m;
for(i = 0; i < n; i++ ){
in>>v[i];
}
arbore(0, n - 1, 0);
for(i = 0; i < m; i++ ){
in>>c>>a>>b;
if( c == 0 )
out<<query(0, 0, n - 1, a - 1, b - 1)<<'\n';
else
update(0, 0, n - 1, a - 1, b);
}
return 0;
}