import qualified Data.Vector.Unboxed as VU
import qualified Data.Vector.Unboxed.Mutable as VUM
import qualified Data.ByteString.Char8 as B
import Data.Char
import Control.Monad

count :: (Int, Int, Int) -> Int -> (Int, Int, Int)
count (a,b,c) n
    | n `rem` 4 == 0 = (a,b,c+1)
    | n `rem` 2 == 0 = (a,b+1,c) 
    | otherwise =  (a+1,b,c) 

classify :: VU.Vector Int -> (Int, Int, Int) 
classify vec = VU.foldl' count (0,0,0) vec

main = do
    n <- readLn :: IO Int
    xs <- VU.unfoldrN n (B.readInt . B.dropWhile isSpace) <$> B.getLine
    let (r,s,t) = classify xs
    
    if (s == 0)
        then putStrLn $ if t >= (r-1) then "Yes" else "No"
        else putStrLn $ if t >= r then "Yes" else "No"