program kk;
var f,g:text;
max:array[1..1000000] of longint;
n,m,i,a,b,sol,op :longint;
function maxim(s,t:longint):longint;
begin
if s<t then maxim:=t
else maxim:=s;
end;
procedure facarbore(p,u,nod:longint);
var mij:longint;
begin
if p=u then read(f,max[nod])
else begin
mij:=(u+p) div 2;
facarbore(p,mij,nod*2);
facarbore(mij+1,u,nod*2+1);
max[nod]:=maxim(max[nod*2],max[nod*2+1]);
end;
end;
procedure aflamax(p,u,nod:longint);
var mij:longint;
begin
if (a<=p)and(b>=u)then begin
if sol<max[nod] then sol:=max[nod];
exit();
end;
mij:=(p+u)div 2;
if a<=mij then aflamax(p,mij,nod*2);
if b>=mij+1 then aflamax(mij+1,u,nod*2+1);
end;
procedure update(p,u,nod:longint);
var mij:longint;
begin
if p=u then max[nod]:=b
else begin
mij:=(p+u)div 2;
if a<=mij then update(p,mij,nod*2)
else update(mij+1,u,nod*2+1);
max[nod]:=maxim(max[nod*2],max[nod*2+1]);
end;
end;
begin
assign(f,'arbint.in');
assign(g,'arbint.out');
rewrite(g);
reset(f);
readln(f,n,m);
facarbore(1,n,1);
for i:=1 to m do
begin
readln(f,op,a,b);
if op=0 then begin
sol:=0;
aflamax(1,n,1);
writeln(g,sol);
end
else update(1,n,1);
end;
close(f);
close(g);
end.