#include<algorithm>
using namespace std;
#define DIM 100005
int a[3*DIM],n,m,sol;
void insert (int nr,int poz,int st,int dr,int k)
{
if(st==dr)
{
a[k]=nr;
return ;
}
int mij=(st+dr)/2;
if(poz<=mij)
insert (nr,poz,st,mij,2*k);
else
insert (nr,poz,mij+1,dr,2*k+1);
a[k]=max(a[2*k],a[2*k+1]);
}
void show (int x,int y,int st,int dr,int k)
{
int mij=(st+dr)/2;
if((st==x && y==dr) || st==dr)
{
sol=max(sol,a[k]);
return ;
}
else
{
if(x<=mij)
show (x,y,st,mij,2*k);
if(y>mij)
show (x,y,mij+1,dr,2*k+1);
}
}
int main ()
{
freopen("arbint.in","r",stdin);
freopen("arbint.out","w",stdout);
int i,q,x,y,nr;
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)
{
scanf("%d",&nr);
insert (nr,i,1,n,1);
}
for(i=1;i<=m;++i)
{
scanf ("%d%d%d",&q,&x,&y);
if(q==0)
{
sol=-1;
show (x,y,1,n,1);
printf("%d\n",sol);
}
else
insert (y,x,1,n,1);
}
return 0;
}