def solve(field):
  for i in range(1, h + 1):
    for j in range(1, w + 1):
      if field[i][j] == '#':
        continue
        if field[i-1][j] == field[i][j-1] == field[i][j+1] == field[i+1][j] == '.':
        '''上下左右に黒がない場合、黒色にできない（隣も塗らざるを得ないから）。
        また黒色にできないのはその場合に限る（1つ以上あれば――ダブってても白には戻らないため――べたべた塗ればよい）'''
          return False
        return True

h, w = list(map(int, input().split()))
field = ['.' + input() + '.' for _ in range(1, h + 1)]
#左右の端についてもsolve(field)を適用するため、入力に左右を付け加える
field = ['.'*(w+2)] + field + ['.'*(w+2)]
'''上下の端についても同様の処理。fieldは例えば['.....', '..#..', '.###.', '..#..', '.....']となる。
これのi番目のリストのj項が、field[i][j]によって指示される。'''
print('Yes' if solve(field) else 'No')#solve(field)だけで、Trueが返ってくるということを意味する。
