var x:array[1..1000]of integer;
i,n,maxx,minn:integer;
procedure pd(r1, r2:integer;
var maxx,minn:integer);
var max1,min1,max2,min2,d:integer;
begin
if(r1=r2) then
begin
maxx:=x[r1];
minn:=x[r1];
end
else if(r2=r1+1) then
begin
if(x[r2]>x[r1]) then
begin
maxx:=x[r2];minn:=x[r1];
end
else
begin
maxx:=x[r1];minn:=x[r2];
end
end
else
begin
d:=(r1+r2) div 2;
pd(r1,d,max1,min1);
pd(d+1,r2,max2,min2);
if (max1>max2) then maxx:=max1
else maxx:=max2;
if (min1<min2) then minn:=min1
else minn:=min2;
end;
end;
begin
//assign(input,'input.txt');
//reset(input);
read(n);
for i:=1 to n do read(x[i]);
//assign(output,'output.txt');
//rewrite(output);
i:=1;
//while not eof do
//begin
//read(x[i]);
//inc(i);
//end;
pd(1,n,maxx,minn);
writeln(maxx,' ',minn);
//close(input);
//close(output);
end.