N = gets.to_i
arr = gets.split.map(&:to_f)

dp = Array.new(N + 1){Array.new(N - (N / 2) + 1, 0)}
dp[0][0] = 1
ans = 0
N.times do |i|
  pre = dp[i].size < N - (N / 2) ? dp[i].size : N - (N / 2)
  pre.times do |j|
    dp[i+1][j] += (dp[i][j] * arr[i]).round(12)
    dp[i+1][j+1] = (dp[i][j] * (1 - arr[i])).round(12)
  end
  ans += dp[i+1][-1]
end
# dp.each do |d|
#   p d
# end
puts 1 - ans