# coding: utf-8

import sys



sr = lambda: sys.stdin.readline().rstrip()

ir = lambda: int(sr())

lr = lambda: list(map(int, sr().split()))



H, W = lr()

S = [sr() for _ in range(H)]

bl = True

for i in range(H):

    for j in range(W):

        if S[i][j] == '.':

            continue

        for dy, dx in zip([0, 1, 0, -1], [1, 0, -1, 0]):

            ny = i + dy

            nx = j + dx

            if 0 <= ny < H and 0 <= nx < W and \

                    S[ny][nx] == '#':

                break

        else:

            bl = False



print('Yes' if bl else 'No')

# coding: utf-8

import sys

import numpy as np



sr = lambda: sys.stdin.readline().rstrip()

ir = lambda: int(sr())

lr = lambda: list(map(int, sr().split()))



H, W = lr()

S = np.array([list(sr()) for _ in range(H)])

black = S == '#'

is_ok = np.zeros_like(S, dtype=np.bool)

is_ok[1:, :] |= black[:-1, :]

is_ok[:-1, :] |= black[1:, :]

is_ok[:, 1:] |= black[:, :-1]

is_ok[:, :-1] |= black[:, 1:]

impossible = (black & (~is_ok)).any()

print(('No' if impossible else 'Yes'))

# coding: utf-8
import sys

sr = lambda: sys.stdin.readline().rstrip()
ir = lambda: int(sr())
lr = lambda: list(map(int, sr().split()))
H, W = lr()
S = [sr() for _ in range(H)]
bl = True
for i in range(H):
    for j in range(W):
        if S[i][j] == ".":
            continue
        for dy, dx in zip([0, 1, 0, -1], [1, 0, -1, 0]):
            ny = i + dy
            nx = j + dx
            if 0 <= ny < H and 0 <= nx < W and S[ny][nx] == "#":
                break
        else:
            bl = False
print("Yes" if bl else "No")

# coding: utf-8
import sys
import numpy as np

sr = lambda: sys.stdin.readline().rstrip()
ir = lambda: int(sr())
lr = lambda: list(map(int, sr().split()))
H, W = lr()
S = np.array([list(sr()) for _ in range(H)])
black = S == "#"
is_ok = np.zeros_like(S, dtype=np.bool)
is_ok[1:, :] |= black[:-1, :]
is_ok[:-1, :] |= black[1:, :]
is_ok[:, 1:] |= black[:, :-1]
is_ok[:, :-1] |= black[:, 1:]
impossible = (black & (~is_ok)).any()
print(("No" if impossible else "Yes"))

+import numpy as np -S = [sr() for _ in range(H)] -bl = True -for i in range(H): -    for j in range(W): -        if S[i][j] == ".": -            continue -        for dy, dx in zip([0, 1, 0, -1], [1, 0, -1, 0]): -            ny = i + dy -            nx = j + dx -            if 0 <= ny < H and 0 <= nx < W and S[ny][nx] == "#": -                break -        else: -            bl = False -print("Yes" if bl else "No") +S = np.array([list(sr()) for _ in range(H)]) +black = S == "#" +is_ok = np.zeros_like(S, dtype=np.bool) +is_ok[1:, :] |= black[:-1, :] +is_ok[:-1, :] |= black[1:, :] +is_ok[:, 1:] |= black[:, :-1] +is_ok[:, :-1] |= black[:, 1:] +impossible = (black & (~is_ok)).any() +print(("No" if impossible else "Yes"))