#include <bits/stdc++.h>
using namespace std;
bool possib(vector<int>& v, vector<int>& u, int q, int w) {
  int vs = v.size(), us = u.size();
  int inco = 0;
  for (int(i) = int(0); i < int(vs); ++i) {
    for (int(j) = int(0); j < int(us); ++j) {
      if (v[i] == u[j]) {
        if (i != j or vs != us) return false;
        ++inco;
      }
    }
  }
  if (inco == 0 or (inco == vs and vs == us)) return true;
  return false;
}
int main() {
  int n, m;
  cin >> n >> m;
  vector<vector<int> > fil(n);
  for (int(i) = int(0); i < int(n); ++i) {
    for (int(j) = int(0); j < int(m); ++j) {
      char c;
      cin >> c;
      if (c == '#') fil[i].push_back(j);
    }
  }
  bool yep = true;
  for (int i = 0; i < n and yep; ++i) {
    for (int j = i + 1; j < n and yep; ++j) {
      yep = possib(fil[i], fil[j], i, j);
    }
  }
  if (yep)
    cout << "Yes\n";
  else
    cout << "No\n";
}
