N=gets.to_i
if N==1
    ps=[gets.to_f]
else
    ps=gets.split.map(&:to_f)
end

ps.unshift(0)
dp=Array.new(N+1)
for i in 0..N
    dp[i]=Array.new(i+1,0.0)
end
dp[0][0]=1.0
for i in 1..N
    f=ps[i]
    for j in 0..i
        if j==0
            dp[i][j]=dp[i-1][0]*(1-f)
        elsif j==i && j!=0
            dp[i][j]=dp[i-1][i-1]*f
        else
            dp[i][j]=dp[i-1][j-1]*f+dp[i-1][j]*(1-f)
        end
    end
end
puts dp[N][N/2+1..-1].inject(:+)
