import           Control.Monad
import qualified Data.Map      as M
import           Data.Maybe    (fromMaybe)
import           Debug.Trace

main :: IO ()
main = do
    [h, w] <- map read . words <$> getLine :: IO [Int]
    bs <- forM [1..h] $ \i -> do
        s <- map (== '#') <$> getLine
        return (zipWith (\j b -> ((i, j), b)) [1..] s)
    let m = M.fromAscList (concat bs)
    putStrLn $ if solve h w m then "Yes" else "No"

solve :: Int -> Int -> M.Map (Int, Int) Bool -> Bool
solve h w m = all f ls
    where
      ls = foldr (\a b -> zip (repeat a) [1..w] ++ b) [] [1..h]
      f (i, j)
          | not (m M.! (i, j)) = True
          | otherwise = let xs =
                                map (flip M.lookup m)
                                [
                                  (i+1, j)
                                , (i, j+1)
                                , (i-1, j)
                                , (i, j-1)]
                            g = fromMaybe False
                        in
                            any g xs

