{-# LANGUAGE ScopedTypeVariables #-}

import Data.Array
import Data.List
import Control.Monad

solve arr h w
    | null res = "Yes"
    | otherwise = "No"
    where
        res = [() | i <- [1..h], j <- [1..w], step arr i j]
        step arr i j = curr && ns
            where
                curr = arr ! (i,j) == '#'
                ns = null $ (filter (\p -> arr ! p == '#') $ filter (\(a,b) -> a > 0 && a <= h && b > 0 && b <= w) [(i+1,j),(i-1,j),(i,j+1),(i,j-1)])


main = do
    [h, w] <- map read . words <$> getLine :: IO [Int]
    str <- concat <$> replicateM h getLine :: IO String
    let (grid :: Array (Int,Int) Char) = listArray ((1,1),(h,w)) str
    putStrLn $ solve grid h w