9 5
.....
#....
..#..
.....
.#..#
...#.
.#...
....#
.....
 4 10
..#......#
.....##...
#.........
.#.......#
 50 2
..
..
#.
..
.#
..
..
..
.#
..
..
.#
##
..
..
..
.#
..
..
.#
..
..
.#
..
..
.#
..
.#
..
.#
..
.#
.#
.#
..
..
..
.#
.#
.#
..
..
.#
.#
..
..
..
..
..
..
 2 50
...#.##.###...#.#..##....##..........#.#..#.#####.
...#.##.###...#.#..##....##..........#.#..#.#####.
 1 1
#
 3 3
.##
#.#
##.
 50 8
.....#..
........
........
.....#..
.....#..
........
........
........
........
...#....
...#....
........
...#....
#.#.#...
...#....
...#....
........
...#....
...#....
...#....
........
#.#.#...
.....#..
........
#.#.#...
#.#.#...
#.#.#...
...#....
........
........
........
#.#.#...
........
.....#..
........
........
........
........
........
........
.....#..
........
........
........
.....#..
#.#.#...
...#....
........
........
........
 1 1
.
 25 16
.............#..
.............#..
.......#...#....
............#...
.....#..........
.....#..........
#...............
................
........#.......
................
................
.#..............
#...............
.....#..........
.#..............
............#...
................
................
................
........#.......
..#.............
..........#.....
.......#...#....
.............#..
..........#.....
 25 16
..............#.
................
...#...#........
........#.#.....
..............##
..............#.
.......#........
......#.........
............#...
.........#.....#
..............#.
.......#........
#...........#...
...#.#..........
.#..............
................
......#.....#...
.......#........
........#.....#.
................
......#.........
..#.............
................
...#.#..........
.#..............
 10 15
.......#.......
.....#.........
....#..........
....#..........
.....#.........
.....#.........
#.............#
...#..#........
...............
.............#.
 4 10
###..#..##
...##..#..
.##..#..#.
.........#
 2 5
.####
#..##
 5 2
##
##
..
##
..
 2 2
##
#.
 50 1
.
.
#
.
#
.
#
.
.
#
#
#
.
#
#
#
#
.
.
.
.
.
.
.
.
.
#
#
#
#
.
.
.
.
.
#
.
.
.
#
#
.
.
#
#
.
.
#
#
.
 5 2
#.
##
##
#.
..
 2 3
#.#
###
 2 1
.
#
 2 3
#.#
##.
 10 10
..........
..........
..........
..........
.#.......#
#.........
......#...
..........
..........
#.....#...
 4 4
###.
##.#
#.##
.###

No
 No
 No
 Yes
 Yes
 No
 Yes
 Yes
 Yes
 No
 Yes
 No
 No
 Yes
 No
 Yes
 No
 No
 Yes
 No
 No
 No

n, m = map(int, raw_input().split())
a = []
arr = {}
vis = {}
for i in range(1, n + 1):
    arr[i] = []
    vis[i] = False
for j in range(1, m + 1):
    arr[-j] = []
    vis[-j] = False
for i in range(n):
    a.append(list(raw_input()))
new = []
for i in range(n):
    for j in range(m):
        if a[i][j] == '#':
            if vis[i + 1] == False and vis[-(j + 1)] == False:
                new.append([i + 1, -j - 1])

            elif vis[i + 1] == True :
                for p in new:
                    if i + 1 in p:
                        p.append(-j - 1)
                        break
            elif vis[i + 1] == False :
                for p in new:
                    if -(j + 1) in p:
                        p.append(i + 1)
                        break
            vis[i + 1] = True
            vis[-(j + 1)] = True

#print new
c = 0
fin = []
new_=[]
for i in new:
    i = list(set(i))
    new_.append(i)
    c += len(i)
    fin += i
if len(list(set(fin))) != c:
    print 'No'
    exit()
for i in new_:
    c = []
    b = []
    for j in i:
        if j < 0:
            b.append(-(j + 1))
        else:
            c.append(j - 1)
    for x in c:
        for y in b:
            if a[x][y] != '#':
                print 'No'
                exit()
print 'Yes'













