#include <bits/stdc++.h>
using namespace std;
const int MX = 1147483646;
const long long MX2 = 9223372036854775800;
const int MOD = 1000000007;
int n, m;
char s[100][100];
vector<int> mcheck[100];
bool taken[100];
int main() {
  scanf("%d %d", &n, &m);
  char x;
  int i, j, k;
  for (i = 1; i <= n; i++) {
    scanf("%c", &x);
    for (j = 1; j <= m; j++) {
      scanf("%c", &s[i][j]);
    }
  }
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= m; j++) {
      if (s[i][j] == '#') {
        if (taken[j] != 1) {
          taken[j] = 1;
          mcheck[j].push_back(j);
          for (k = j + 1; k <= m; k++) {
            if (s[i][k] == '#') {
              mcheck[j].push_back(k);
              if (taken[k]) {
                printf("No");
                return 0;
              }
              taken[k] = 1;
            }
          }
        } else {
          if (mcheck[j].empty()) {
            printf("No");
            return 0;
          }
          int idx = 1;
          for (k = j + 1; k <= m; k++) {
            if (s[i][k] == '#') {
              if (mcheck[j][idx] != k) {
                printf("No");
                return 0;
              }
              idx++;
            }
          }
          if (idx != mcheck[j].size()) {
            printf("No");
            return 0;
          }
        }
        break;
      }
    }
  }
  printf("Yes");
  return 0;
}
