{DEFINE DEBUG}
{$DEFINE DMI}
{$DEFINE DO0}
{$IFDEF DEBUG}
{$B-,I+,N+,O-,Q+,R+,S+}
{$ELSE}
{$B-,I-,N+,O+,Q-,R-,S-}
{$ENDIF}
{$APPTYPE CONSOLE}
Program JurySol;
uses SysUtils;
const TaskName = 'lie';
 MaxN = 100; MaxSim = 62000000; MaxP = 1000001; eps: Extended = 1E-14;
var i, j, n, x, y: Integer;
 p: array [1..MaxN] of Integer;
 ok: Boolean;
 f: Extended;

BEGIN
 reset (input, TaskName + '.in');
 rewrite (output, TaskName + '.out');
 randseed := 40999999;
{$IFDEF DMI} repeat {$ENDIF}
 read (n);
 for i := 1 to n do begin
  read (f);
  p[i] := Round (f * (MaxP - 1));
 end;
 y := MaxSim div n;
 x := 0;
 for i := 1 to y do begin
  ok := True;
  for j := 1 to n do
   if random (MaxP) >= p[j] then
    ok := NOT ok;
  if ok then inc (x);
 end;
 writeln (x / y + eps:0:6);
{$IFDEF DMI} until seekeof; {$ENDIF}
END.
