#include <bits/stdc++.h>
using namespace std;
char s[60];
int n, m, d[60][60], fa[323];
inline int read() {
  int x = 0, p = 1;
  char c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') p = -1;
    c = getchar();
  }
  while (c <= '9' && c >= '0') {
    x = x * 10 + c - '0';
    c = getchar();
  }
  return x * p;
}
int find(int x) {
  int t1 = x, t2;
  while (x != fa[x]) x = fa[x];
  while (t1 != fa[t1]) {
    t2 = fa[t1];
    fa[t1] = x;
    t1 = t2;
  }
  return x;
}
int main() {
  n = read();
  m = read();
  for (int i = 1; i <= n; ++i) fa[i] = i;
  for (int j = 1; j <= m; ++j) fa[j + n] = j + n;
  for (int i = 1; i <= n; ++i) {
    scanf("%s", s + 1);
    for (int j = 1; j <= m; ++j)
      if (s[j] == '#') {
        d[i][j] = 1;
        fa[find(i)] = find(j + n);
      }
  }
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= n; ++j) {
      if (find(i) == find(j + n) && !d[i][j]) return puts("No"), 0;
    }
  }
  puts("Yes");
  return 0;
}
