program stock;
var
w:array[1..1000] of real;
i,j,k,m,n,t1,tol,c:longint;
min,max,temp,ans,ans1:real;
flag:boolean;
begin
assign(input,'stock.in');reset(input);
assign(output,'stock.out');rewrite(output);
readln(n);
for i:=1 to n do
read(w[i]);
readln(m);
min:=maxlongint;
for i:=1 to n-1 do
for j:=i+1 to n do
begin
inc(tol);
if w[i]<m then flag:=true;
ans:=(trunc(m/w[i]))*(w[j]-w[i]);
if ans>max then max:=ans;
end;
if not flag then ans:=0 else ans:=max;
writeln(ans:0:3);
for i:=1 to n-1 do
for j:=i+1 to n do
if (w[i]<w[j])and(w[i]<m) then inc(c);
ans1:=c/tol;
writeln(ans1:0:3);
close(output);
end.