d = list(map(int,input().split()))
at = []
at.append(["."]*(d[1]+2))
for i in range(d[0]):
  at.append(list(input()))
  at[i+1].insert(0,".")
  at[i+1].insert(d[1],".")
at.append(["."]*(d[1]+2))
l = [[1,0],[0,1],[-1,0],[0,-1]]
re = True
op = False
def ao(k, re,op,l):
  ppp = True
  for a in range(1,d[0]):
    for b in range(1,d[1]):
      for dx,dy in l:
        if k[a][b] =="#" and k[a+dx][b+dy] ==".":
          re = False
        elif k[a][b] =="#" and k[a+dx][b+dy] =="#":
          op = True
      if op == True:
        re = True
      elif re == False:
        ppp = False
      op = False
  if ppp == False:
    return False
  else:
    return re
if ao(at,re,op,l) == True:
  print("Yes")
else:
  print("No")