#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > G1, G2;
int Visted[55] = {};
char arr[55][55];
int main() {
  int n, m;
  cin >> n >> m;
  G1.resize(n), G2.resize(m);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      cin >> arr[i][j];
      if (arr[i][j] == '#') {
        G1[i].push_back(j);
        G2[j].push_back(i);
      }
    }
  }
  for (int i = 0; i < G1.size(); i++) {
    memset(Visted, 0, sizeof Visted);
    int numberof = 0;
    for (int j = 0; j < G1[i].size(); j++) {
      int number = G1[i][j];
      if (j == 0) {
        for (int z = 0; z < G2[number].size(); z++) {
          Visted[G2[number][z]] = 1;
          numberof++;
        }
      } else {
        if (G2[number].size() == numberof) {
          for (int z = 0; z < G2[number].size(); z++) {
            if (Visted[G2[number][z]] == 0) {
              cout << "No";
              return 0;
            }
          }
        } else {
          cout << "No";
          return 0;
        }
      }
    }
  }
  cout << "Yes";
  return 0;
}
