#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, m;
  cin >> n >> m;
  vector<vector<char> > t(n, vector<char>(m));
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      cin >> t[i][j];
    }
  }
  set<int> gr, gc;
  bool good = true;
  for (int i = 0; i < n; i++) {
    set<int> r, c;
    for (int j = 0; j < m; j++) {
      if (t[i][j] == '#') {
        c.insert(j);
        for (int k = 0; k < n; k++) {
          if (t[k][j] == '#') {
            r.insert(k);
            t[k][j] = '$';
          }
        }
      }
    }
    for (int it : r) {
      for (int jt : c) {
        if (t[it][jt] != '$' and t[it][jt] != '#') {
          good = false;
        }
      }
    }
    for (int e : r) {
      if (gr.find(e) != gr.end()) {
        good = false;
      }
      gr.insert(e);
    }
    for (int e : c) {
      if (gc.find(e) != gc.end()) {
        good = false;
      }
      gc.insert(e);
    }
  }
  cout << (good ? "Yes" : "No") << endl;
  return 0;
}
