# 1.上下左右を探索

def searchAround(sheet, h,w):

    # 上がblackか？

    try:

        isSharpAbove = (sheet[h-1][w]=="#")

        if h==0:

            isSharpAbove = False

    except IndexError:

        isSharpAbove = False

        

    # 下がblackか？

    try:

        isSharpBelow = (sheet[h+1][w]=="#")

    except IndexError:

        isSharpBelow = False

    

    # 右がblackか？

    try:

        isSharpRight = (sheet[h][w+1]=="#")

    except IndexError:

        isSharpRight = False

    

    # 左がblackか？

    try:

        isSharpLeft = (sheet[h][w-1]=="#")

        if w==0:

            isSharpLeft = False

    except IndexError:

        isSharpLeft = False  

        

        

    # blackがあるか？

    if isSharpAbove \

    or isSharpBelow \

    or isSharpRight \

    or isSharpLeft:

            return 0

    else:

        return 1

            

    



def main():

    H,W = map(int, input().split())

    sheet = []

    flag = 0

    for h in range(H):

        sheet.append(list(input()))

    

    for h in range(H):

        for w in range(W):

            if sheet[h][w] == "#":

                flag = searchAround(sheet, h,w)

            if flag==1:

                print('No')

                return 0



    if flag == 0:

        print('Yes')





if __name__ == "__main__":

    main()

H,W = list(map(int, input().split()))



graph = [[] for _ in range(H+2)]

graph[0].extend(["." for i in range(W+2)])

for h in range(H):

    graph[h+1].append(".")

    graph[h+1].extend(list(input().rstrip()))

    graph[h+1].append(".")

graph[H+1].extend(["." for i in range(W+2)])



canAchieve = True

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

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

        if graph[h][w] == '#':

            if graph[h+1][w] == "#":

                continue

            elif graph[h-1][w] == "#":

                continue

            elif graph[h][w+1] == "#":

                continue

            elif graph[h][w-1] == "#":

                continue

            

            canAchieve = False

            

if canAchieve:

    print("Yes")

else:

    print("No")
# 1.上下左右を探索
def searchAround(sheet, h, w):
    # 上がblackか？
    try:
        isSharpAbove = sheet[h - 1][w] == "#"
        if h == 0:
            isSharpAbove = False
    except IndexError:
        isSharpAbove = False
    # 下がblackか？
    try:
        isSharpBelow = sheet[h + 1][w] == "#"
    except IndexError:
        isSharpBelow = False
    # 右がblackか？
    try:
        isSharpRight = sheet[h][w + 1] == "#"
    except IndexError:
        isSharpRight = False
    # 左がblackか？
    try:
        isSharpLeft = sheet[h][w - 1] == "#"
        if w == 0:
            isSharpLeft = False
    except IndexError:
        isSharpLeft = False
    # blackがあるか？
    if isSharpAbove or isSharpBelow or isSharpRight or isSharpLeft:
        return 0
    else:
        return 1


def main():
    H, W = map(int, input().split())
    sheet = []
    flag = 0
    for h in range(H):
        sheet.append(list(input()))
    for h in range(H):
        for w in range(W):
            if sheet[h][w] == "#":
                flag = searchAround(sheet, h, w)
            if flag == 1:
                print("No")
                return 0
    if flag == 0:
        print("Yes")


if __name__ == "__main__":
    main()

H, W = list(map(int, input().split()))
graph = [[] for _ in range(H + 2)]
graph[0].extend(["." for i in range(W + 2)])
for h in range(H):
    graph[h + 1].append(".")
    graph[h + 1].extend(list(input().rstrip()))
    graph[h + 1].append(".")
graph[H + 1].extend(["." for i in range(W + 2)])
canAchieve = True
for h in range(1, H + 1):
    for w in range(1, W + 1):
        if graph[h][w] == "#":
            if graph[h + 1][w] == "#":
                continue
            elif graph[h - 1][w] == "#":
                continue
            elif graph[h][w + 1] == "#":
                continue
            elif graph[h][w - 1] == "#":
                continue
            canAchieve = False
if canAchieve:
    print("Yes")
else:
    print("No")

-# 1.上下左右を探索 -def searchAround(sheet, h, w): -    # 上がblackか？ -    try: -        isSharpAbove = sheet[h - 1][w] == "#" -        if h == 0: -            isSharpAbove = False -    except IndexError: -        isSharpAbove = False -    # 下がblackか？ -    try: -        isSharpBelow = sheet[h + 1][w] == "#" -    except IndexError: -        isSharpBelow = False -    # 右がblackか？ -    try: -        isSharpRight = sheet[h][w + 1] == "#" -    except IndexError: -        isSharpRight = False -    # 左がblackか？ -    try: -        isSharpLeft = sheet[h][w - 1] == "#" -        if w == 0: -            isSharpLeft = False -    except IndexError: -        isSharpLeft = False -    # blackがあるか？ -    if isSharpAbove or isSharpBelow or isSharpRight or isSharpLeft: -        return 0 -    else: -        return 1 - - -def main(): -    H, W = map(int, input().split()) -    sheet = [] -    flag = 0 -    for h in range(H): -        sheet.append(list(input())) -    for h in range(H): -        for w in range(W): -            if sheet[h][w] == "#": -                flag = searchAround(sheet, h, w) -            if flag == 1: -                print("No") -                return 0 -    if flag == 0: -        print("Yes") - - -if __name__ == "__main__": -    main() +H, W = list(map(int, input().split())) +graph = [[] for _ in range(H + 2)] +graph[0].extend(["." for i in range(W + 2)]) +for h in range(H): +    graph[h + 1].append(".") +    graph[h + 1].extend(list(input().rstrip())) +    graph[h + 1].append(".") +graph[H + 1].extend(["." for i in range(W + 2)]) +canAchieve = True +for h in range(1, H + 1): +    for w in range(1, W + 1): +        if graph[h][w] == "#": +            if graph[h + 1][w] == "#": +                continue +            elif graph[h - 1][w] == "#": +                continue +            elif graph[h][w + 1] == "#": +                continue +            elif graph[h][w - 1] == "#": +                continue +            canAchieve = False +if canAchieve: +    print("Yes") +else: +    print("No")