#include <bits/stdc++.h>
using namespace std;
bool com(vector<int> &a, vector<int> &b) {
  int n = a.size(), m = b.size();
  if (n != m) return 0;
  for (int i = 0; i < n; i++)
    if (a[i] != b[i]) return 0;
  return 1;
}
int main() {
  int n, m, first = 0;
  cin >> n >> m;
  vector<string> a;
  for (int i = 0; i < n; i++) {
    string second;
    cin >> second;
    a.push_back(second);
  }
  vector<int> row[n];
  vector<int> r(n, 0);
  vector<int> c(m, 0);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (a[i][j] == '#') row[i].push_back(j);
  for (int i = 0; i < n; i++) {
    if (r[i] == 0) {
      for (int j = 0; j < (int)(row[i].size()); j++) {
        if (c[row[i][j]] != 0) {
          cout << "No";
          return 0;
        } else
          c[row[i][j]] = 1;
      }
      for (int k = i + 1; k < n; k++) {
        if (com(row[i], row[k])) {
          r[k] = 1;
        }
      }
      r[i] = 1;
    }
  }
  cout << "Yes";
  return 0;
}
