import java.io.*;
import java.util.Arrays;
public class Main {
private static int[] v;
private static int[] arbint = new int[(int)4e5 + 20];
private static int[] parseLine(String line, int nr) {
int[] result = new int[nr];
int number = 0;
int k = 0;
for (int i = 0; i < line.length(); i++) {
char character = line.charAt(i);
if (character >= '0' && character <= '9') {
number = number * 10 + (character - '0');
} else {
result[k++] = number;
number = 0;
}
}
if (k != nr) {
result[k] = number;
}
return result;
}
private static void createArb(int node, int left, int right) {
if (left == right) {
arbint[node] = v[left - 1];
return;
}
int leftChild = node * 2;
int rightChild = node * 2 + 1;
int mid = (left + right) / 2;
createArb(leftChild, left, mid);
createArb(rightChild, mid + 1, right);
arbint[node] = Math.max(arbint[leftChild], arbint[rightChild]);
}
private static int getMax(int node, int left, int right, int a, int b) {
if (a <= left && b >= right)
return arbint[node];
int leftChild = node * 2;
int rightChild = node * 2 + 1;
int mid = (left + right) / 2;
int max = 0;
if (a <= mid) {
max = Math.max(max, getMax(leftChild, left, mid, a, b));
}
if (b > mid) {
max = Math.max(max, getMax(rightChild, mid + 1, right, a, b));
}
return max;
}
private static void updateValue(int node, int left, int right, int pos, int newValue) {
if (left == right) {
arbint[node] = newValue;
return;
}
int leftChild = node * 2;
int rightChild = node * 2 + 1;
int mid = (left + right) / 2;
if (pos <= mid)
updateValue(leftChild, left, mid, pos, newValue);
else updateValue(rightChild, mid + 1, right, pos, newValue);
arbint[node] = Math.max(arbint[leftChild], arbint[rightChild]);
}
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader("arbint.in"));
BufferedWriter writer = new BufferedWriter(new FileWriter("arbint.out"));
String first = reader.readLine();
int[] numbers = parseLine(first, 2);
int n = numbers[0];
int q = numbers[1];
String second = reader.readLine();
v = parseLine(second, n);
createArb(1, 1, n);
for (int i = 0; i < q; i++) {
numbers = parseLine(reader.readLine(), 3);
int queryType = numbers[0];
int a = numbers[1];
int b = numbers[2];
if (queryType == 0) {
int max = getMax(1, 1, n, a, b);
writer.write(Integer.toString(max));
writer.newLine();
} else {
updateValue(1, 1, n, a, b);
}
}
reader.close();
writer.close();
}
}