#include <stdio.h>
#define Nmax 100100
int a[3*Nmax],max,n,m,x;
void up(int st,int dr,int i,int pas)
{
if(st==dr)
a[pas]=x;
else
{
if(i<=(st+dr)/2)
up(st,(st+dr)/2,i,2*pas);
else
if(i>(st+dr)/2)
up((st+dr)/2+1,dr,i,2*pas+1);
a[pas]=a[pas*2];
if(a[pas*2+1]>a[pas])
a[pas]=a[pas*2+1];
}
}
void q(int st,int dr, int x_,int y,int pas)
{
if(x_<=st && dr<=y)
{
if(max<a[pas])
max=a[pas];
}
else
{
int mij=(st+dr)/2;
if(x_<=mij) q(st,mij,x_,y,pas*2);
if(y>mij) q(mij+1,dr,x_,y,pas*2+1);
}
}
int main()
{
int i,y,op;
freopen("arbint.in","r",stdin);
freopen("arbint.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)
{
scanf("%d",&x);
up(1,n,i,1);
}
for(i=1;i<=m;++i)
{
scanf("%d%d%d",&op,&y,&x);
if(op==0)
{
max=0;
q(1,n,y,x,1);
printf("%d\n",max);
}
else
up(1,n,y,1);
}
return 0;
}