threshold :: Int -> [Int] -> Float
threshold m as = (fromIntegral . sum $ as) / (4.0 * fromIntegral m) 

point :: Int -> [Int] -> Int -> Int
point m as a = if fromIntegral a >= threshold m as then 1 else 0

selectedCount :: Int -> [Int] -> Int
selectedCount m as = foldl1 ((+) . point m as) as

result :: Int -> [Int] -> String
result m as = if m <= selectedCount m as then "Yes" else "No"

{--
testprint :: Int -> Int -> [Int] -> IO ()
testprint n m as = do
     putStrLn $ "input " ++ show n ++ " " ++ show m ++ " " ++ show as
     putStrLn $ "threshold " ++ (show $ threshold m as) 
     putStrLn $ "selectedCount " ++ (show $ selectedCount m as)
     putStrLn $ "result " ++ result m as
--}

main :: IO ()
main = do

    [n, m] <- map read . words <$> getLine :: IO [Int]
    as <- map read . words <$> getLine :: IO [Int]
    putStrLn $ result m as
    
    {--
    testprint 4 1 [5,4,2,1]
    testprint 3 2 [380,19,1]
    testprint 12 3 [4,56,78,901,2,345,67,890,123,45,6,789]
    --}
