#include <bits/stdc++.h>
using namespace std;
bool check_vec(vector<int> &a, vector<int> &b) {
  if (a.size() != b.size()) return false;
  for (int i = 0; i < a.size(); i++)
    if (a[i] != b[i]) return false;
  return true;
}
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  char **mas = new char *[n];
  for (int i = 0; i < n; i++) {
    mas[i] = new char[m + 1];
    scanf("%s", mas[i]);
  }
  vector<int> *row = new vector<int>[n], *col = new vector<int>[m];
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (mas[i][j] == '#') row[i].push_back(j);
  for (int j = 0; j < m; j++)
    for (int i = 0; i < n; i++)
      if (mas[i][j] == '#') col[j].push_back(i);
  for (int i = 0; i < n; i++) {
    for (int j = 1; j < row[i].size(); j++)
      if (!check_vec(col[row[i][j - 1]], col[row[i][j]])) {
        printf("No\n");
        return false;
      }
  }
  for (int j = 0; j < m; j++) {
    for (int i = 1; i < col[j].size(); i++)
      if (!check_vec(row[col[j][i - 1]], row[col[j][i]])) {
        printf("No\n");
        return false;
      }
  }
  printf("Yes\n");
  return 0;
}
