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

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

for h in range(H):

    for w in range(W):

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

            for dh, dw in ((1, 0), (-1, 0), (0, 1), (0, -1)):

                next_h, next_w = h + dh, w + dw

                if -1 < next_h < H and -1 < next_w < W:

                    if grid[next_h][next_w] == "#":

                        break

            else:

                print("No")

                exit()

else:

    print("Yes")

import sys



sys.setrecursionlimit(10 ** 7)

f_inf = float('inf')

mod = 10 ** 9 + 7





def resolve():

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

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



    for h in range(H):

        for w in range(W):

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

                for dh, dw in ((1, 0), (-1, 0), (0, 1), (0, -1)):

                    next_h, next_w = h + dh, w + dw

                    if next_h < 0 or next_h >= H or next_w < 0 or next_w >= W:

                        continue

                    elif S[next_h][next_w] == "#":

                        break

                else:

                    print("No")

                    exit()



    print("Yes")





if __name__ == '__main__':

    resolve()

H, W = list(map(int, input().split()))
grid = [list(eval(input())) for _ in range(H)]
for h in range(H):
    for w in range(W):
        if grid[h][w] == "#":
            for dh, dw in ((1, 0), (-1, 0), (0, 1), (0, -1)):
                next_h, next_w = h + dh, w + dw
                if -1 < next_h < H and -1 < next_w < W:
                    if grid[next_h][next_w] == "#":
                        break
            else:
                print("No")
                exit()
else:
    print("Yes")

import sys

sys.setrecursionlimit(10**7)
f_inf = float("inf")
mod = 10**9 + 7


def resolve():
    H, W = list(map(int, input().split()))
    S = [list(eval(input())) for _ in range(H)]
    for h in range(H):
        for w in range(W):
            if S[h][w] == "#":
                for dh, dw in ((1, 0), (-1, 0), (0, 1), (0, -1)):
                    next_h, next_w = h + dh, w + dw
                    if next_h < 0 or next_h >= H or next_w < 0 or next_w >= W:
                        continue
                    elif S[next_h][next_w] == "#":
                        break
                else:
                    print("No")
                    exit()
    print("Yes")


if __name__ == "__main__":
    resolve()

-H, W = list(map(int, input().split())) -grid = [list(eval(input())) for _ in range(H)] -for h in range(H): -    for w in range(W): -        if grid[h][w] == "#": -            for dh, dw in ((1, 0), (-1, 0), (0, 1), (0, -1)): -                next_h, next_w = h + dh, w + dw -                if -1 < next_h < H and -1 < next_w < W: -                    if grid[next_h][next_w] == "#": +import sys + +sys.setrecursionlimit(10**7) +f_inf = float("inf") +mod = 10**9 + 7 + + +def resolve(): +    H, W = list(map(int, input().split())) +    S = [list(eval(input())) for _ in range(H)] +    for h in range(H): +        for w in range(W): +            if S[h][w] == "#": +                for dh, dw in ((1, 0), (-1, 0), (0, 1), (0, -1)): +                    next_h, next_w = h + dh, w + dw +                    if next_h < 0 or next_h >= H or next_w < 0 or next_w >= W: +                        continue +                    elif S[next_h][next_w] == "#": -            else: -                print("No") -                exit() -else: +                else: +                    print("No") +                    exit() + + +if __name__ == "__main__": +    resolve()