#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  int n, m;
  cin >> n >> m;
  vector<string> data(n);
  for (auto &x : data) {
    cin >> x;
  }
  bool flag = true;
  for (int i = 0; i < n && flag; ++i) {
    vector<int> can_be;
    for (int j = 0; j < m; ++j) {
      if (data[i][j] == '#') {
        can_be.push_back(j);
      }
    }
    vector<int> good_rows;
    vector<int> my_rows;
    for (int j = 0; j < can_be.size(); ++j) {
      if (!flag) {
        break;
      }
      int col = can_be[j];
      for (int r = i + 1; r < n; ++r) {
        if (data[r][col] != '#') {
          continue;
        }
        if (j == 0) {
          good_rows.push_back(r);
        }
        my_rows.push_back(r);
      }
      if (my_rows != good_rows) {
        flag = false;
      }
      my_rows.clear();
    }
    if (flag) {
      vector<int> good_columns;
      for (int j = 0; j < good_rows.size(); ++j) {
        for (int k = 0; k < m; ++k) {
          if (data[good_rows[j]][k] == '#') {
            good_columns.push_back(k);
          }
        }
        if (good_columns != can_be) {
          flag = false;
          break;
        }
        good_columns.clear();
      }
    }
  }
  if (flag) {
    cout << "Yes\n";
  } else {
    cout << "No\n";
  }
  return 0;
}
