#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define pf push_front
#define MOD 1000000007
#define MAX 100005
using namespace std;
class ArboreDeIntervale
{
private:
int *arb, SIZE;
private:
void functie(int nod, int x, int y)
{
arb[nod] = max(arb[x], arb[y]);
}
int rezultat(int x, int y)
{
return max(x, y);
}
void construieste(int nod, int st, int dr, int v[])
{
int mij;
if(st == dr) arb[nod] = v[st];
else
{
mij = (st + dr) / 2;
construieste(2 * nod, st, mij, v);
construieste(2 * nod + 1, mij + 1, dr, v);
functie(nod, 2 * nod, 2 * nod + 1);
}
}
void SeteazaPozitie(int nod, int st, int dr, int poz, int val)
{
int mij;
if(st == dr) arb[nod] = val;
else
{
mij = (st + dr) / 2;
if(poz <= mij) SeteazaPozitie(2 * nod, st, mij, poz, val);
else SeteazaPozitie(2 * nod + 1, mij + 1, dr, poz, val);
functie(nod, 2 * nod, 2 * nod + 1);
}
}
int Intreaba(int nod, int st, int dr, int x, int y)
{
int mij;
if(x <= st && y >= dr) return arb[nod];
else
{
mij = (st + dr) / 2;
if(x > mij) return Intreaba(2 * nod + 1, mij + 1, dr, x, y);
else if(y <= mij) return Intreaba(2 * nod, st, mij, x, y);
else return rezultat(Intreaba(2 * nod + 1, mij + 1, dr, x, y), Intreaba(2 * nod, st, mij, x, y));
}
}
public:
ArboreDeIntervale(int Dimensiune)
{
SIZE = 1 << int(log2(Dimensiune - 1) + 1);
arb = (int*)(malloc((SIZE + 2) * sizeof(int)));
for(int i = 0; i <= SIZE; i++) arb[i] = 0;
}
ArboreDeIntervale(int Dimensiune, int *Vector)
{
SIZE = Dimensiune;
arb = (int*)(malloc((2 * (1 << int(log2(Dimensiune - 1) + 1)) + 2) * sizeof(int)));
construieste(1, 1, SIZE, Vector);
}
void SetPoz(int poz, int val)
{
SeteazaPozitie(1, 1, SIZE, poz, val);
}
int GetRez(int st, int dr)
{
return Intreaba(1, 1, SIZE, st, dr);
}
};
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int main()
{
ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
int n, q, i, x, y, z, v[MAX];
fin >> n >> q;
for(i = 1; i <= n; i++) fin >> v[i];
ArboreDeIntervale a(n, v);
while(q--)
{
fin >> x >> y >> z;
if(x == 0) fout << a.GetRez(y, z) << '\n';
else a.SetPoz(y, z);
}
return 0;
}