# C - Grid Repainting 2
from collections import deque

H, W = map(int, input().split())
grid = [[''] * W for _ in range(H)]
for i in range(H):
    grid[i] = list(str(input()))

d = deque()
ans = 'Yes'
for i in range(H):
    for j in range(W):
        d.append((i, j))
        tmp = 0
        while d:
            p, q = d.popleft()
            if grid[p][q] == '#':
                grid[p][q] = '.'
                tmp += 1
            for x, y in ((0, 1), (1, 0), (1, 0), (0, -1)):
                nx = p+x
                ny = q+y
                if nx < 0 or nx >= H or ny < 0 or ny >= W:
                    continue
                if grid[nx][ny] == '.':
                    continue
                d.append((nx, ny))
        if tmp == 1:
            ans = 'No'
            break
    else:
        continue
    break
print(ans)