#include <cstdio>
#define dim 100001
int N,M,X,V,P;
int rez, st, f;
int S[4*dim + 66];
inline int max(int a, int b)
{
return (a > b) ? a : b;
}
void update(int nod, int li, int lf)
{
if(li == lf)
{
S[nod] = V;
return;
}
int mij = (li + lf) >> 1;
if(P <= mij) update(2*nod, li, mij);
else update(2*nod + 1, mij + 1, lf);
S[nod] = max(S[2*nod], S[2*nod + 1]);
}
void querry(int nod, int li, int lf)
{
if(st <= li && f >= lf)
{
if(rez < S[nod]) rez = S[nod];
return;
}
int mij = (li + lf) >> 1;
if(st <= mij) querry(2*nod,li,mij);
if(mij < f) querry(2*nod + 1,mij+1,lf);
}
void citire()
{
scanf("%d %d",&N,&M);
for(int i = 1; i <= N; ++i)
{
scanf("%d",&X);
P = i, V = X;
update(1,1,N);
}
}
void solve()
{
int A,B,C;
for(int i = 1; i <= M; ++i)
{
scanf("%d %d %d",&A,&B,&C);
if(A == 0)
{
rez = -1;
st = B, f = C;
querry(1,1,N);
printf("%d\n",rez);
}
else
{
P = B, V = C;
update(1,1,N);
}
}
}
int main()
{
freopen("arbint.in","rt",stdin);
freopen("arbint.out","wt",stdout);
citire();
solve();
}