P
uses math;
var
a,f:array[0..1000000]of longint;
i,n,m,p,x1,y1,s:longint;
procedure make(v,l,r:longint);
var
w,g:longint;
begin
if l=r then
begin
f[v]:=a[l];
exit;
end;
w:=(l+r) div 2;
g:=2*v;
make(g,l,w);
make(g+1,w+1,r);
f[v]:=max(f[g],f[g+1]);
end;
procedure find(v,l,r,x,y:longint);
var
mid:longint;
begin
if (x=l)and(y=r) then
begin
s:=max(f[v],s);
exit;
end;
mid:=(l+r) div 2;
if y<=mid then
find(2*v,l,mid,x,y)
else
if x>mid then
find(2*v+1,mid+1,r,x,y);
if (y>mid)and(x<=mid) then
begin
find(2*v,l,mid,x,mid);
find(2*v+1,mid+1,r,mid+1,y);
end;
end;
procedure change(v,l,r,x,y:longint);
var
q,o:longint;
begin
if l=r then
begin
f[v]:=y;
exit;
end;
q:=(l+r) div 2;
o:=v*2;
if x<=q then
change(o,l,q,x,y)
else
change(o+1,q+1,r,x,y);
f[v]:=max(f[o],f[o+1]);
end;
begin
readln(n);
for i:=1 to n do
readln(a[i]);
make(1,1,n);
readln(m);
for i:=1 to m do
begin
readln(p,x1,y1);
if p=1 then
change(1,1,n,x1,y1)
else
begin
s:=-maxlongint;
find(1,1,n,x1,y1);
writeln(s);
end;
end;
end.