import sys

#探索
def DFS(mapmap, start_flag = False):
    while 1:
        #はじめの探索
        for i in range(lines):
            for j in range(rows):
                if mapmap[i][j] == '#':
                    start_flag = True
                    break
        
        move_x = [1, -1, 0, 0]
        move_y = [0, 0, 1, -1]

        startl, startr = i, j
        Stack = [[startl, startr]]

        #終了条件
        fin_flag = True
        for i in range(len(move_x)):
            nx = startl + move_x[i]
            ny = startr + move_y[i]

            if 0 <= nx and nx < lines and 0 <= ny and ny < rows:
                if mapmap[nx][ny] == '#':
                    fin_flag = False
                    break

        if fin_flag == True:
            print('No')
            sys.exit()

        while Stack:
            x, y= Stack.pop()#今現在の位置
            #現在位置を変換
            mapmap[x][y] = '.'

            for i in range(len(move_x)):
                nx = x + move_x[i]
                ny = y + move_y[i]

                if 0 <= nx and nx < lines and 0 <= ny and ny < rows:
                    if mapmap[nx][ny] == '#':
                        Stack.append([nx, ny])
        
        #owarrino探索
        fin_flag_2 = False
        for i in range(lines):
            for j in range(rows):
                if mapmap[i][j] == '#':
                    start_flag_2 = True
                    break
        
        if fin_flag_2 == False:
            print('Yes')
            sys.exit()

#入力管理
lines, rows = map(int, input().split())
mapmap = []

for i in range(lines):
    mapmap.append(list(input()))

DFS(mapmap)