#include <bits/stdc++.h>
using namespace std;
int m, n;
char grid[100][100];
bool Check(int row1, int row2) {
  bool same = false, diff = false;
  for (int i = (0); i < (m); i++)
    if (grid[row1][i] != grid[row2][i]) {
      diff = true;
      break;
    }
  if (diff == false) same = true;
  if (same == true)
    for (int i = (0); i < (m); i++)
      if (grid[row1][i] != grid[row2][i]) return false;
  if (diff == true)
    for (int i = (0); i < (m); i++)
      if (grid[row1][i] == '#' && grid[row2][i] == '#') return false;
  return true;
}
int main() {
  cin >> n >> m;
  for (int i = (0); i < (n); i++)
    for (int j = (0); j < (m); j++) cin >> grid[i][j];
  for (int i = (0); i < (n); i++)
    for (int j = (i + 1); j < (n); j++)
      if (Check(i, j) == false) {
        cout << "No";
        return 0;
      }
  cout << "Yes";
  return 0;
  return 0;
}
