n=gets.to_i
pi=gets.split.map(&:to_f)

p pi.inject({[0,0]=>1.0}){|s,r|
  s.each_with_object({}){|((kf,kb),v),o|
    h = {
      [kf+1,kb  ]=>v*r,
      [kf  ,kb+1]=>v*(1-r)
    }
    o.update(h){|k,v1,v2|v1+v2}
  }
}.select{|(kf,kb),v|kf>kb}.values.inject(:+)