#include <fstream>
#define dim 100001
using namespace std;
int n, m, i, j, v[dim], A[4*dim+66], a, b, sol, t;
ifstream fin ("arbint.in");
ofstream fout ("arbint.out");
void build (int nod, int st, int dr)
{
int mid;
if (st==dr) {
A[nod]=v[dr];
}
else {
mid = (st+dr)/2;
build (2*nod, st, mid);
build (2*nod+1, mid+1, dr);
A[nod]=max(A[2*nod], A[2*nod+1]);
}
}
void update (int nod, int st, int dr, int p, int x)
{
int mid;
if (st==dr) {
A[nod]=x;
} else {
mid = (st+dr)/2;
if (p<=mid)
update (2*nod, st, mid, p, x);
else
update (2*nod+1, mid+1, dr, p, x);
A[nod]=max(A[2*nod], A[2*nod+1]);
}
}
void query(int nod, int st, int dr, int a, int b, int &sol)
{
int mid;
if (a<=st && b>=dr) {
sol=max(sol, A[nod]);
} else {
mid = (st+dr)/2;
if (a<=mid)
query(2*nod, st, mid, a, b, sol);
if (b>mid)
query(2*nod+1, mid+1, dr, a, b, sol);
}
}
int main () {
fin>>n>>m;
for (i=1;i<=n;i++) {
fin>>v[i];
}
build (1, 1, n);
for (i=1;i<=m;i++) {
fin>>t>>a>>b;
if (t==0) {
//query
sol=-1;
query(1, 1, n, a, b, sol);
fout<<sol<<"\n";
} else {
//update
update(1, 1, n, a, b);
}
}
return 0;
}