import qualified Data.Vector.Unboxed as U
import Data.List
import Debug.Trace


main :: IO ()
main = do
    n <- fmap read getLine
    ps <- fmap (map read . words) getLine
    let v0 = U.singleton 1.0
    let vn :: U.Vector Double
        vn = foldl' step v0 ps
        step tbl pi = U.generate (l + 1) gen
            where
            l = U.length tbl 
            gen i = q1 + q2 
                where
                    q1 = if i >= 1 then pi * tbl U.! (i - 1) else 0
                    q2 = if i < l  then (1 - pi) * tbl U.! i else 0
    print (U.sum $ U.drop (n `div` 2 + 1) vn)
