import qualified Data.Vector as V

main :: IO ()
main = do
  [h,w] <- map read . words <$> getLine
  t <- getTable
  putStrLn $ if solve t h w then "Yes" else "No"

getTable :: IO Table
getTable = V.fromList . map (V.fromList . map toBW) . lines <$> getContents
  where toBW '#' = B
        toBW '.' = W
        toBW _ = error "!"

solve :: Table -> Int -> Int -> Bool
solve tbl w h = all check [(i,j) | i <- [0..(w-1)], j <- [0..(h-1)]]
  where
    get (i,j) = tbl V.! j V.! i
    around (x,y) | x == 0 && y == 0 = [(1,0),(0,1)]
                 | x == 0 && y == h-1 = [(x,y-1),(x+1,y)]
                 | x == w-1 && y == 0 = [(x-1,y),(x,y+1)]
                 | x == w-1 && y == h-1 = [(x-1,y),(x,y-1)]
                 | x == 0 = [(x,y-1),(x,y+1),(x+1,y)]
                 | x == w-1 = [(x,y-1),(x,y+1),(x-1,y)]
                 | y == 0 = [(x-1,y),(x+1,y),(x,y+1)]
                 | y == h-1 = [(x-1,y),(x+1,y),(x,y-1)]
                 | otherwise = [(x-1,y),(x+1,y),(x,y-1),(x,y+1)]
    check i | get i == W = True
            | otherwise = any (==B) $ [get n | n <- around i]

data BW = B | W deriving Eq

type Table = V.Vector (V.Vector BW)

