import Control.Monad

solve :: [String] -> [(Int, Int)] -> (Int, Int) -> [Bool]
solve _ [] _ = []
solve ss (xy:xys) hw = check ss xy hw : solve ss xys hw

check :: [String] -> (Int, Int) -> (Int, Int) -> Bool
check ss (x, y) (h, w) = dot || sharp
  where f (a, b) = a>=0 && a<w && b>=0 && b<h
        t = filter f [(x-1, y), (x, y-1), (x+1, y), (x, y+1)]
        dot = ss !! y !! x == '.'
        sharp = any (\(tx, ty) -> ss !! ty !! tx == '#') t

main :: IO ()
main = do
  [h, w] <- map read . words <$> getLine
  ss <- replicateM h getLine
  let t = [(x, y) | x <- [0..w-1], y <- [0..h-1]]
  putStrLn $ if and $ solve ss t (h, w) then "Yes" else "No"