var arb:array[1..200000] of longint;
n,m,i,j,x,a,b,poz,max:longint;
f,g:text;
function mx(a,b:longint):longint;
begin
if a>b then
mx:=a
else
mx:=b;
end;
procedure update(nod,l,r:longint);
var m:longint;
begin
m:=(l+r) div 2;
if (l=poz)and(r=poz) then
begin
arb[nod]:=x;
exit;
end;
if poz<=m then
update(nod*2,l,m)
else
update(nod*2+1,m+1,r);
arb[nod]:=mx(arb[2*nod],arb[2*nod+1]);
end;
procedure query(nod,l,r:longint);
var m:longint;
begin
if (l>=a)and(r<=b) then
begin
if arb[nod]>max then
max:=arb[nod];
exit;
end;
m:=(l+r) div 2;
if a<=m then
query(2*nod,l,m);
if b>m then
query(2*nod+1,m+1,r);
end;
begin
assign(f,'arbint.in');reset(f);
assign(g,'arbint.out');rewrite(g);
readln(f,n,m);
for i:=1 to n do
begin
read(f,x);
poz:=i;
update(1,1,n);
end;
for i:=1 to m do
begin
readln(f,x,a,b);
if x=0 then
begin
max:=-1;
query(1,1,n);
writeln(g,max);
end
else
begin
x:=b;
poz:=a;
update(1,1,n);
end;
end;
close(f);close(g);
end.