def ii():return int(eval(input()))

def iim():return list(map(int,input().split()))

def iil():return list(map(int,input().split()))

def ism():return list(map(str,input().split()))

def isl():return list(map(str,input().split()))



h,w = iim()



flag = True



l = []

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

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

for i in range(h):

    l.append(list(eval(input())))



for i in range(h):

    for j in range(w):

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

            check = False

            for k in range(4):

                if i+dx[k] < 0 or i+dx[k] >= h:

                    continue

                if j+dy[k] < 0 or j+dy[k] >= w:

                    continue

                if l[i+dx[k]][j+dy[k]] == '#':

                    check = True

            if not check:

                flag = False



print(('Yes' if flag else 'No'))
def ii():return int(eval(input()))

def iim():return list(map(int,input().split()))

def iil():return list(map(int,input().split()))

def ism():return list(map(str,input().split()))

def isl():return list(map(str,input().split()))



h,w = iim()

l = []

l.append(['.']*(w+2))

for _ in range(h):

    l.append(['.']+list(eval(input()))+['.'])

l.append(['.']*(w+2))



flag = True

for i in range(1,h+1,):

    for j in range(1,w+1):

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

            tmp = [l[i-1][j],l[i+1][j],l[i][j-1],l[i][j+1]]

            if '#' not in tmp:

                flag = False

print(('Yes' if flag else 'No'))
def ii():
    return int(eval(input()))


def iim():
    return list(map(int, input().split()))


def iil():
    return list(map(int, input().split()))


def ism():
    return list(map(str, input().split()))


def isl():
    return list(map(str, input().split()))


h, w = iim()
flag = True
l = []
dx = [0, 0, 1, -1]
dy = [1, -1, 0, 0]
for i in range(h):
    l.append(list(eval(input())))
for i in range(h):
    for j in range(w):
        if l[i][j] == "#":
            check = False
            for k in range(4):
                if i + dx[k] < 0 or i + dx[k] >= h:
                    continue
                if j + dy[k] < 0 or j + dy[k] >= w:
                    continue
                if l[i + dx[k]][j + dy[k]] == "#":
                    check = True
            if not check:
                flag = False
print(("Yes" if flag else "No"))

def ii():
    return int(eval(input()))


def iim():
    return list(map(int, input().split()))


def iil():
    return list(map(int, input().split()))


def ism():
    return list(map(str, input().split()))


def isl():
    return list(map(str, input().split()))


h, w = iim()
l = []
l.append(["."] * (w + 2))
for _ in range(h):
    l.append(["."] + list(eval(input())) + ["."])
l.append(["."] * (w + 2))
flag = True
for i in range(
    1,
    h + 1,
):
    for j in range(1, w + 1):
        if l[i][j] == "#":
            tmp = [l[i - 1][j], l[i + 1][j], l[i][j - 1], l[i][j + 1]]
            if "#" not in tmp:
                flag = False
print(("Yes" if flag else "No"))

+l = [] +l.append(["."] * (w + 2)) +for _ in range(h): +    l.append(["."] + list(eval(input())) + ["."]) +l.append(["."] * (w + 2)) -l = [] -dx = [0, 0, 1, -1] -dy = [1, -1, 0, 0] -for i in range(h): -    l.append(list(eval(input()))) -for i in range(h): -    for j in range(w): +for i in range( +    1, +    h + 1, +): +    for j in range(1, w + 1): -            check = False -            for k in range(4): -                if i + dx[k] < 0 or i + dx[k] >= h: -                    continue -                if j + dy[k] < 0 or j + dy[k] >= w: -                    continue -                if l[i + dx[k]][j + dy[k]] == "#": -                    check = True -            if not check: +            tmp = [l[i - 1][j], l[i + 1][j], l[i][j - 1], l[i][j + 1]] +            if "#" not in tmp: