#include<iostream>
#include<cstdio>
using namespace std;
int x, pos, maxi=-1, si, sf, maxim[400000], n, m;
void Inserare(int nod, int left, int right)
{
if(left==right)
maxim[nod]=x;
else
{
int mij=(left+right)/2;
if(pos<=mij)
Inserare(2*nod, left, mij);
else
Inserare(2*nod+1, mij+1, right);
maxim[nod]=max(maxim[2*nod], maxim[2*nod+1]);
}
}
void Interogare(int nod, int left, int right)
{
if(si<=left && right<=sf)
{if(maxim[nod]>maxi)
{maxi=maxim[nod];}}
else
{
int mij=(left+right)/2;
if(si<=mij)
Interogare(2*nod, left, mij);
if(mij+1<=sf)
Interogare(2*nod+1, mij+1, right);
}
}
int main()
{
FILE *fin, *fout;
fin=fopen("arbint.in","r");
fout=fopen("arbint.out","w");
int i, y, a, b;
fscanf(fin, "%d %d", &n, &m);
for(i=1; i<=n; i++)
{
fscanf(fin, "%d", &x);
pos=i;
Inserare(1,1,n);
}
for(i=0; i<m; i++)
{
fscanf(fin, "%d %d %d", &y, &a, &b);
if(y==0)
{
maxi=-2;
si=a;
sf=b;
Interogare(1,1,n);
fprintf(fout, "%d\n",maxi);
}
if(y==1)
{
pos=a;
x=b;
Inserare(1,1,n);
}
}
}