import java.util.Scanner;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.Map;
import java.util.Iterator;
import java.io.File;
import java.io.PrintWriter;
public class Main{
public static void printer(Tree t){
System.out.print(t.val + " ");
if(t.left != null)
printer(t.left);
if(t.right != null)
printer(t.right);
}
public static boolean overlaps(int s, int d, int x, int y){
if(x >= s && x <= d)
return true;
if(y >= s && y <= d)
return true;
return false;
}
public static boolean includes(int s, int d, int x, int y){
if(s >= x && d <=y)
return true;
return false;
}
public static int search(Tree t, int s, int d, int x, int y){
//System.out.println(s + " " + d + " " + x + " " + y);
if(includes(s,d,x,y))
return t.val;
int m = (s+d)/2;
int result = Integer.MIN_VALUE;
if(overlaps(s,m,x,y))
result = Math.max(result, search(t.left, s,m,x,y));
if(overlaps(m + 1, d,x,y))
result = Math.max(result, search(t.right,m+1,d,x,y));
return result;
}
private static void insert(Tree t, int s, int d, int num, int poz){
//System.out.println(s + " " + d + " " + num + " " + poz);
if(s == d){
//System.out.println(s + " " + poz);
t.val = num;
return;
}
int m = (s + d)/2;
if(poz >= s && poz <= m){
insert(t.left, s,m, num, poz);
}
if(poz >= m+1 && poz <= d)
insert(t.right, m + 1, d, num, poz);
if(t.left != null){
if(t.right != null)
t.val = Math.max(t.left.val, t.right.val);
else
t.val = t.left.val;
}
else{
if(t.right!= null)
t.val = t.right.val;
}
}
public static void main(String[] args) throws Exception{
//Scanner scanner = new Scanner(System.in);
File file = new File("arbint.in");
Scanner scanner = new Scanner(file);
PrintWriter writer = new PrintWriter("arbint.out", "UTF-8");
Tree root = new Tree();
int n = Integer.parseInt(scanner.next());
int nn = Integer.parseInt(scanner.next());
for(int i = 0; i < n; i++){
int num = Integer.parseInt(scanner.next());
Tree it = root;
int s,d;
s = 0;
d = n - 1;
int m;
while( s!=d ){
m = (s + d) / 2;
if(num > it.val)
it.val = num;
if(i <= m){
if(it.left == null)
it.left = new Tree();
it = it.left;
d = m;
}
else{
if(it.right == null)
it.right = new Tree();
it = it.right;
s = m + 1;
}
if(d == s)
it.val = num;
}
}
for(int i = 0; i < nn;i++){
//printer(root);
int op = Integer.parseInt(scanner.next());
int s = Integer.parseInt(scanner.next());
int d = Integer.parseInt(scanner.next());
if(op == 0){
//System.out.println("Result: " + search(root, 0, n - 1, s - 1, d - 1));
writer.println(search(root, 0, n - 1, s - 1, d - 1));
}
else
insert(root, 0, n-1, d, s - 1);
}
writer.close();
//System.out.println("GUCCI " + search(root, 0, n - 1, 1, 5));
}
}
class Tree{
Tree left, right;
int val;
public Tree(){
val = -1 * Integer.MIN_VALUE;
}
}