#include <fstream>
#include <iostream>
#define mx(x,y) x>y?x:y;
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int n,m,a[400010];
void modify(int, int, int, int ,int);
int interogate(int, int, int, int, int);
int main()
{
f >> n >> m;
for(int i=1; i<=n; ++i)
{
f >> a[0];
modify(i, a[0], 1, 1, n);
}
for(int i=1; i<=m; ++i)
{
int x, y;
f >> a[0] >> x >> y;
if(a[0])
{
modify(x, y, 1, 1, n);
}
else
{
g << interogate(1, x, y, 1, n) << '\n';
}
}
}
void modify(int poz, int val, int cur, int st, int dr)
{
int m = (dr + st) / 2;
if(dr == st)
{
a[cur] = val;
}
else
{
if(poz<=m)
{
modify(poz, val, 2*cur, st, m);
}
else
{
modify(poz, val, 2*cur+1, m+1, dr);
}
a[cur] = mx(a[cur*2], a[cur*2+1]);
}
}
int interogate(int cur, int s, int d, int st, int dr)
{
if(s == st && d == dr)
{
return a[cur];
}
else
{
int m = (st + dr) / 2;
if(s <= m)
{
if(d > m)
{
int a = interogate(2 * cur, s, m, st, m), b = interogate(2 * cur + 1, m + 1, d, m+1, dr);
return mx(a,b);
}
else
{
return interogate(2 * cur, s, d, st, m);
}
}
else
{
return interogate(2 * cur + 1, s, d, m+1, dr);
}
}
}