#include <bits/stdc++.h>
using namespace std;
bool solve(vector<vector<bool>> &f, int x, int y) {
  set<int> R, C;
  R.insert(x);
  C.insert(y);
  int added;
  do {
    added = 0;
    for (int i : R)
      for (int j = 0; j < f[i].size(); j++)
        if (f[i][j])
          if (C.insert(j).second) added++;
    for (int i : C)
      for (int j = 0; j < f.size(); j++)
        if (f[j][i])
          if (R.insert(j).second) added++;
  } while (added > 0);
  for (int i : R)
    for (int j : C)
      if (!f[i][j])
        return false;
      else
        f[i][j] = false;
  return true;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.sync_with_stdio(false);
  cout.sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  int n, m;
  cin >> n >> m;
  vector<vector<bool>> f(n, vector<bool>(m, false));
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      char ch;
      cin >> ch;
      if (ch == '.' || ch == '#')
        f[i][j] = (ch == '#');
      else
        j--;
    }
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      if (f[i][j]) {
        if (!solve(f, i, j)) {
          cout << "No" << endl;
          return 0;
        }
      }
    }
  cout << "Yes" << endl;
  return 0;
}
