using namespace std;
#include<cstdio>
#define dim 100001
int H[4*dim+66],n,m,a,b,val,poz,max;
int maxim (int q,int w) {if(q>w) return q; return w;}
void update(int nod,int st,int dr)
{
int mij;
if(st==dr) { H[nod]=val;return;}
mij=(st+dr)/2;
if(poz<=mij) update(nod*2,st,mij);
else update(nod*2+1,mij+1,dr);
H[nod]=maxim(H[nod*2],H[nod*2+1]);
}
void query(int nod,int st,int dr)
{
int mij;
if(a<=st && dr<=b)
{
if(max<H[nod]) max=H[nod];
return;
}
else
{
mij=(st+dr)/2;
if(a<=mij) query(nod*2,st,mij);
if(mij<b) query(nod*2+1,mij+1,dr);
}
}
int main()
{
int i,x,y,k;
freopen("arbint.in","r",stdin);
freopen("arbint.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d",&x);
val=x;
poz=i;
update(1,1,n);
}
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&k,&x,&y);
if(k)
{
val=y;
poz=x;
update(1,1,n);
}
else
{
a=x;b=y;max=-1;
query(1,1,n);
printf("%d\n",max);
}
}
return 0;
}