H, W = list(map(int, input().split()))

S = [eval(input()) for i in range(H)]



def singleB(i, j):

    search = [(-1, 0), (1, 0), (0, -1), (0, 1)]

    single = True

    for s in search:

        if 0 <= i+s[0] <= H-1 and 0 <= j+s[1] <= W-1:

                if S[i+s[0]][j+s[1]] == "#":

                        single = False

    return single



Success = True

for i in range(H):

    for j in range(W):

        if S[i][j] == "#":

            if singleB(i, j):

                Success = False

print(("Yes" if Success else "No"))
import sys

def solve():

    H, W = list(map(int, input().split()))

    S = [eval(input()) for _ in range(H)]

    search = [(-1, 0), (1, 0), (0, -1), (0, 1)]

    possible = True

    for h in range(H):

        for w in range(W):

            if S[h][w] == "#":

                for dh, dw in search:

                    if 0 <= h + dh < H and 0 <= w + dw < W:

                        if S[h+dh][w+dw] == "#":

                            break

                else:

                    possible = False

                    break

        if not possible: break

    print(("Yes" if possible else "No"))



    

    return 0



if __name__ == "__main__":

    solve()
H, W = list(map(int, input().split()))
S = [eval(input()) for i in range(H)]


def singleB(i, j):
    search = [(-1, 0), (1, 0), (0, -1), (0, 1)]
    single = True
    for s in search:
        if 0 <= i + s[0] <= H - 1 and 0 <= j + s[1] <= W - 1:
            if S[i + s[0]][j + s[1]] == "#":
                single = False
    return single


Success = True
for i in range(H):
    for j in range(W):
        if S[i][j] == "#":
            if singleB(i, j):
                Success = False
print(("Yes" if Success else "No"))

import sys


def solve():
    H, W = list(map(int, input().split()))
    S = [eval(input()) for _ in range(H)]
    search = [(-1, 0), (1, 0), (0, -1), (0, 1)]
    possible = True
    for h in range(H):
        for w in range(W):
            if S[h][w] == "#":
                for dh, dw in search:
                    if 0 <= h + dh < H and 0 <= w + dw < W:
                        if S[h + dh][w + dw] == "#":
                            break
                else:
                    possible = False
                    break
        if not possible:
            break
    print(("Yes" if possible else "No"))
    return 0


if __name__ == "__main__":
    solve()

-H, W = list(map(int, input().split())) -S = [eval(input()) for i in range(H)] +import sys -def singleB(i, j): +def solve(): +    H, W = list(map(int, input().split())) +    S = [eval(input()) for _ in range(H)] -    single = True -    for s in search: -        if 0 <= i + s[0] <= H - 1 and 0 <= j + s[1] <= W - 1: -            if S[i + s[0]][j + s[1]] == "#": -                single = False -    return single +    possible = True +    for h in range(H): +        for w in range(W): +            if S[h][w] == "#": +                for dh, dw in search: +                    if 0 <= h + dh < H and 0 <= w + dw < W: +                        if S[h + dh][w + dw] == "#": +                            break +                else: +                    possible = False +                    break +        if not possible: +            break +    print(("Yes" if possible else "No")) +    return 0 -Success = True -for i in range(H): -    for j in range(W): -        if S[i][j] == "#": -            if singleB(i, j): -                Success = False -print(("Yes" if Success else "No")) +if __name__ == "__main__": +    solve()