# include <stdio.h>
# define input "arbint.in"
# define output "arbint.out"
# define max 100001
# define maxim(A,B) (A>B?A:B)
int n,i,j,x,y,m,c;
int a[4*max];
void insert(int st,int dr,int x,int val,int nod)
{
if(st == dr)
{
a[nod] = val;
return;
}
int mij = (st+dr)/2;
if(mij >= x)
insert(st,mij,x,val,2*nod);
else
insert(mij+1,dr,x,val,2*nod+1);
a[nod] = maxim(a[2*nod],a[2*nod+1]);
}
int interogare(int st,int dr,int x,int y,int nod)
{
if(x <= st && dr <= y)
{
return a[nod];
}
int mij = (st+dr)/2;
int val1,val2;
val1 = val2 = 0;
if(x <= mij) val1 = interogare(st,mij,x,y,2*nod);
if(y >= mij+1) val2 = interogare(mij+1,dr,x,y,2*nod+1);
return maxim(val1,val2);
}
int main()
{
freopen(input, "r", stdin);
freopen(output, "w", stdout);
scanf("%d%d",&n,&m);
for(i = 1;i<=n;i++)
{
scanf("%d",&x);
insert(1,n,i,x,1);
}
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&c, &x, &y);
if(c)
{
insert(1,n,x,y,1);
}
else
printf("%d\n",interogare(1,n,x,y,1));
}
return 0;
}