{-# LANGUAGE OverloadedStrings #-}
import Data.List
import qualified Data.ByteString.Char8 as B
import Control.Monad

main = readLn >>= main'
    where
        main' n = breads >>= B.putStrLn . solve n

-- |
-- >>> solve 3 [1, 10, 100]
-- "Yes"
--
-- >>> solve 4 [1, 2, 3, 4]
-- "No"
--
-- >>> solve 3 [1, 4, 1]
-- "Yes"
--
-- >>> solve 2 [1, 1]
-- "No"
--
-- >>> solve 6 [2, 7, 1, 8, 2, 8]
-- "Yes"
solve :: Int -> [Int] -> B.ByteString
solve n = judge . foldl' ff (0, 0)
    where
        ff (acc4, acc2) x
            | x `mod` 4 == 0 = (acc4 + 1, acc2)
            | x `mod` 2 == 0 = (acc4, acc2 + 1)
            | otherwise = (acc4, acc2)

        judge (n4, n2)
            | n4 >= (n - (n2 `div` 2) * 2) `div` 2 = "Yes"
            | otherwise = "No"

breads :: IO [Int]
breads = unfoldr uff <$> B.getLine
    where
        uff b = check <$> B.readInt b
        check (a, b)
            | B.null b = (a, b)
            | otherwise = (a, B.tail b)
