# -*- coding: utf-8 -*-



# AtCoder Beginner Contest

# Problem C



if __name__ == '__main__':

    h, w = list(map(int, input().split()))

    board = [list(map(str, eval(input()))) for _ in range(h)]

    dx = [1, 0, -1, 0]

    dy = [0, 1, 0, -1]



    for i in range(h):

        for j in range(w):

            if board[i][j] == '#':

                count = 0



                for k in range(len(dx)):

                    x = i + dx[k]

                    y = j + dy[k]



                    if (x >= 0) and (x < h) and (y >= 0) and (y < w) and (board[x][y] == "#"):

                        count += 1



                if count == 0:

                    print('No')

                    exit()



    print('Yes')

# -*- coding: utf-8 -*-





def main():

    h, w = list(map(int, input().split()))

    board = [list(eval(input())) for _ in range(h)]

    dx = [0, 0, -1, 1]

    dy = [-1, 1, 0, 0]



    for i in range(h):

        for k in range(w):

            if board[i][k] == '#':

                count = 0



                for m in range(4):

                    x = i + dx[m]

                    y = k + dy[m]



                    if 0 <= x < h and 0 <= y < w and board[x][y] == '#':

                        count += 1



                if count == 0:

                    print('No')

                    exit()



    print('Yes')





if __name__ == '__main__':

    main()

# -*- coding: utf-8 -*-
# AtCoder Beginner Contest
# Problem C
if __name__ == "__main__":
    h, w = list(map(int, input().split()))
    board = [list(map(str, eval(input()))) for _ in range(h)]
    dx = [1, 0, -1, 0]
    dy = [0, 1, 0, -1]
    for i in range(h):
        for j in range(w):
            if board[i][j] == "#":
                count = 0
                for k in range(len(dx)):
                    x = i + dx[k]
                    y = j + dy[k]
                    if (
                        (x >= 0)
                        and (x < h)
                        and (y >= 0)
                        and (y < w)
                        and (board[x][y] == "#")
                    ):
                        count += 1
                if count == 0:
                    print("No")
                    exit()
    print("Yes")

# -*- coding: utf-8 -*-
def main():
    h, w = list(map(int, input().split()))
    board = [list(eval(input())) for _ in range(h)]
    dx = [0, 0, -1, 1]
    dy = [-1, 1, 0, 0]
    for i in range(h):
        for k in range(w):
            if board[i][k] == "#":
                count = 0
                for m in range(4):
                    x = i + dx[m]
                    y = k + dy[m]
                    if 0 <= x < h and 0 <= y < w and board[x][y] == "#":
                        count += 1
                if count == 0:
                    print("No")
                    exit()
    print("Yes")


if __name__ == "__main__":
    main()

-# AtCoder Beginner Contest -# Problem C -if __name__ == "__main__": +def main(): -    board = [list(map(str, eval(input()))) for _ in range(h)] -    dx = [1, 0, -1, 0] -    dy = [0, 1, 0, -1] +    board = [list(eval(input())) for _ in range(h)] +    dx = [0, 0, -1, 1] +    dy = [-1, 1, 0, 0] -        for j in range(w): -            if board[i][j] == "#": +        for k in range(w): +            if board[i][k] == "#": -                for k in range(len(dx)): -                    x = i + dx[k] -                    y = j + dy[k] -                    if ( -                        (x >= 0) -                        and (x < h) -                        and (y >= 0) -                        and (y < w) -                        and (board[x][y] == "#") -                    ): +                for m in range(4): +                    x = i + dx[m] +                    y = k + dy[m] +                    if 0 <= x < h and 0 <= y < w and board[x][y] == "#": + + +if __name__ == "__main__": +    main()