#include <bits/stdc++.h>
using namespace std;
const int SZ = 1e2 + 10;
int n, m;
char arr[SZ][SZ];
bool check_str(int a, int b) {
  bool one, two;
  one = two = false;
  for (int i = 0; i < m; i++) {
    if (arr[a][i] == '#' && arr[b][i] == '#') one = true;
    if (arr[a][i] == '#' && arr[b][i] != '#') two = true;
    if (arr[a][i] != '#' && arr[b][i] == '#') two = true;
  }
  if (one && two) return false;
  return true;
}
bool check_stolb(int a, int b) {
  bool one, two;
  one = two = false;
  for (int i = 0; i < n; i++) {
    if (arr[i][a] == '#' && arr[i][b] == '#') one = true;
    if (arr[i][a] == '#' && arr[i][b] != '#') two = true;
    if (arr[i][a] != '#' && arr[i][b] == '#') two = true;
  }
  if (one && two) return false;
  return true;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) cin >> arr[i][j];
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if (!check_str(i, j)) {
        cout << "No";
        return 0;
      }
    }
  }
  for (int i = 0; i < m; i++) {
    for (int j = 0; j < m; j++) {
      if (!check_stolb(i, j)) {
        cout << "No";
        return 0;
      }
    }
  }
  cout << "Yes";
  return 0;
}
