import Control.Applicative
import Control.Monad
import Data.Array
import Data.Bool

solve :: Array (Int,Int) Char -> ((Int,Int)->[(Int,Int)]) -> Bool
solve bd nFunc = and [ok ix| ix <- indices bd]
    where ok ix | bd ! ix =='.' = True
                | otherwise = or [bd ! adj == '#'| adj <- nFunc ix]

neighbor :: Int -> Int -> (Int,Int) -> [(Int,Int)]
neighbor h w (i,j) = filter inrange [(i+1,j),(i-1,j),(i,j+1),(i,j-1)]
    where inrange (i,j) = and [i>=1, j>=1, i<=h, j<=w]

main = do
    [h,w] <- map read . words <$> getLine
    lines <- replicateM h getLine
    let bd = listArray ((1,1),(h,w)) (concat lines)
    putStrLn $ bool "No" "Yes" (solve bd (neighbor h w))
