import sys
from itertools import permutations
from heapq import heappop,heappush
from collections import deque
import random
import bisect

input = lambda :sys.stdin.readline().rstrip()
mi = lambda :map(int,input().split())
li = lambda :list(mi())

H,W = mi()
S = [input() for i in range(H)]

maximum_r = [[H+W]*W for i in range(H)]

for s in range(-(W-1),H):
    tmp = 0
    for j in range(max(0,-s),min(W,H-s)):
        i = s + j
        if not 0 <= i < H:
            continue

        if S[i][j] == "#":
            maximum_r[i][j] = min(maximum_r[i][j],tmp)
            tmp += 1
        else:
            maximum_r[i][j] = -1
            tmp = 0
    
    tmp = 0
    for j in range(max(0,-s),min(W,H-s))[::-1]:
        i = s + j
        if not 0 <= i < H:
            continue

        if S[i][j] == "#":
            maximum_r[i][j] = min(maximum_r[i][j],tmp)
            tmp += 1
        else:
            maximum_r[i][j] = -1
            tmp = 0


for t in range(H+W-1):
    tmp = 0
    """
    0 <= t-j < H
    t-H < j <= t
    max(0,t-H+1) <= j < min(t+1,W)
    """
    for j in range(max(0,t-H+1),min(t+1,W))[::-1]:
        i = t - j
        if not 0 <= i < H:
            continue

        if S[i][j] == "#":
            maximum_r[i][j] = min(maximum_r[i][j],tmp)
            tmp += 1
        else:
            maximum_r[i][j] = 0
            tmp = 0
    
    tmp = 0
    for j in range(max(0,t-H+1),min(t+1,W)):
        i = t - j
        if not 0 <= i < H:
            continue

        if S[i][j] == "#":
            maximum_r[i][j] = min(maximum_r[i][j],tmp)
            tmp += 1
        else:
            maximum_r[i][j] = -1
            tmp = 0

final = [[0]*W for i in range(H)]
for s in range(-(W-1),H):
    tmp = -1
    for j in range(max(0,-s),min(W,H-s)):
        i = s + j
        if not 0 <= i < H:
            continue
        
        if maximum_r[i][j] > 0:
            tmp = max(tmp-1,maximum_r[i][j])
        else:
            tmp = tmp - 1
        if tmp >= 0:
            final[i][j] = 1

    tmp = 0
    for j in range(max(0,-s),min(W,H-s))[::-1]:
        i = s + j
        if not 0 <= i < H:
            continue

        if maximum_r[i][j] > 0:
            tmp = max(tmp-1,maximum_r[i][j])
        else:
            tmp = tmp - 1
        if tmp >= 0:
            final[i][j] = 1

for t in range(H+W-1):
    tmp = 0
    for j in range(max(0,t-H+1),min(t+1,W))[::-1]:
        i = t - j
        if not 0 <= i < H:
            continue

        if maximum_r[i][j] > 0:
            tmp = max(tmp-1,maximum_r[i][j])
        else:
            tmp = tmp - 1
        if tmp >= 0:
            final[i][j] = 1
    
    tmp = 0
    for j in range(max(0,t-H+1),min(t+1,W)):
        i = t - j
        if not 0 <= i < H:
            continue

        if maximum_r[i][j] > 0:
            tmp = max(tmp-1,maximum_r[i][j])
        else:
            tmp = tmp - 1
        if tmp >= 0:
            final[i][j] = 1

#for i in range(H):
    #print(maximum_r[i])
#print()
#for i in range(H):
    #print(final[i])
ans = "Yes"
for i in range(H):
    for j in range(W):
        if S[i][j] == "#" and not final[i][j]:
            ans = "No"
print(ans)