# coding: utf-8

H, W = map(int, input().split())
S = []
for i in range(H):
    S.append(list(input()))
ans = 'Yes'
endFlg = False

# 4隅
if S[0][0] == '#' and S[0][1] == '.' and S[1][0] == '.':
    ans = 'No'
    endFlg = True
if S[0][W - 1] == '#' and S[0][W - 2] == '.' and S[1][W - 1] == '.':
    ans = 'No'
    endFlg = True
if S[H - 1][0] == '#' and S[H - 1][1] == '.' and S[H - 2][0] == '.':
    ans = 'No'
    endFlg = True
if S[H - 1][W - 1] == '#' and S[H - 1][W - 2] == '.' and S[H - 2][W - 1] == '.':
    ans = 'No'
    endFlg = True

# 上辺
if endFlg != True:
    for j, c in enumerate(S[0][1:W - 1]):
        if c == '#':
            if (S[1][j+1] == '.' and S[0][j + 2] == '.' and S[0][j] == '.'):
                ans = 'No'
                endFlg = True

if endFlg != True:
    # 下辺
    for j, c in enumerate(S[H - 1][1:W - 1]):
        if c == '#':
            if (S[H-2][j+1] == '.' and S[H-1][j + 2] == '.' and S[H-1][j] == '.'):
                ans = 'No'
                endFlg = True

if endFlg != True:
    # 左辺
    for i, c in enumerate(S[1:H - 2][0]):
        if c == '#':
            if (S[i+1][1] == '.' and S[i][0] == '.' and S[i+2][0] == '.'):
                ans = 'No'
                endFlg = True

if endFlg != True:
    # 右辺
    for i, c in enumerate(S[1:H - 2][W - 2]):
        if c == '#':
            if (S[i+1][W-2] == '.' and S[i][W-1] == '.' and S[i+2][W-1] == '.'):
                ans = 'No'
                endFlg = True

for i, r in enumerate(S[1:H - 1][1:W - 2]):
    for j, c in enumerate(r):
        if c == '#':
            if (S[i - 1][j] == '.' and S[i][j + 1] == '.' and S[i + 1][j] == '.' and S[i][j - 1] == '.'):
                ans = 'No'
                endFlg = True
                break
    if endFlg == True:
        break

print(ans)
