import numpy as np
h,w=map(int,input().split())
box=[["."]+list(input())+["."] for i in range(h)]
box.insert(0,["."]*(w+2))
box.append(["."]*(w+2))
count=0
def seek(box,i,j):
    point=[[1,0],[-1,0],[0,1],[0,-1]]
    if box[i][j]=="#":
        for x,y in point:
            xx=x+i
            yy=y+j
            if box[xx][yy]=="#" or box[xx][yy]=="O":
                box[i][j]="O"
                seek(box,xx,yy)
    return box
for i in range(1,h+1):
    for j in range(1,w+1):
        seek(box,i,j)

for i in range(1,h+1):
    for j in range(1,w+1):
        if box[i][j]=="#":print("No");exit()

print("Yes")