#include <iostream>
#include <fstream>
using namespace std;
#define MAX 1010
void constrArb(int nod, int st, int dr, int maxim[], int A[]) {
int mid = (st + dr) / 2;
if (st == dr) {
maxim[nod] = A[st];
}
constrArb(2 * nod, st, mid, maxim, A);
constrArb(2 * nod + 1, mid + 1, dr, maxim, A);
maxim[nod] = max(maxim[2 * nod], maxim[2 * nod + 1]);
}
void update(int nod, int a, int b, int st, int dr, int maxim[], int A[]) {
maxim[nod] = max(b, maxim[nod]);
if (st == dr) {
A[st] = b;
return;
}
int mid = (st + dr) / 2;
if (a > mid) {
update(2 * nod + 1, a, b, mid + 1, dr, maxim, A);
} else {
update(2 * nod, a, b, st, mid, maxim, A);
}
}
int query(int nod, int st, int dr, int a, int b, int maxim[], int A[]) {
if (st > b || dr <= b) {
return -2000000000;
}
}
int main()
{
ifstream fin("arbint.in");
ifstream fout("arbint.out");
int N, M, A[MAX], maxim[4 * MAX], op, a, b;
fin >> N >> M;
for (int i = 1; i <= N; i++) {
fin >> A[i];
}
constrArb(1, 1, N, maxim, A);
for (int i = 0; i < M; i++) {
fin >> op >> a >> b;
if (op == 0) {
} else {
}
}
fin.close();
fout.close();
return 0;
}