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

import sys


def read_two_int():
	return map(int, sys.stdin.readline().strip().split(' '))


def get_colored_rows(A, n, col):
	return {i for i in range(n) if A[i][col] == '#'}


def get_colored_columns(A, m, row):
	return {j for j in range(m) if A[row][j] == '#'}


def validate_step_correct(A, n, m, rows, columns):
	for row in rows:
		if get_colored_columns(A, m, row) != columns:
			# print("Bad columns ", columns)
			return False

	for column in columns:
		if get_colored_rows(A, n, column) != rows:
			# print("Bad rows ", rows)
			return False
	return True


def clear_step(A, rows, columns):
	for i in rows:
		for j in columns:
			A[i][j] = '.'


def validate_map(n, m, A):
	used_rows = [False for i in range(n)]
	used_columns = [False for j in range(m)]

	for i in range(n):
		for j in range(m):
			if A[i][j] != '#':
				continue

			rows = get_colored_rows(A, n, j)
			columns = get_colored_columns(A, m, i)
			# print(rows)
			# print(columns)

			if not validate_step_correct(A, n, m, rows, columns):
				return False

			clear_step(A, rows, columns)

	# map is empty now
	return True


n, m = read_two_int()
A = []
for i in range(n):
	row = sys.stdin.readline().strip()
	A.append([c for c in row])

print('Yes' if validate_map(n, m, A) else 'No')
