#include <bits/stdc++.h>
using namespace std;
const int maxn = 55;
int row[maxn];
int col[maxn];
char grid[maxn][maxn];
int m, n;
int check(int a, int b) {
  int book = 0;
  for (int i = 0; i < m; i++) {
    if (grid[a][i] != grid[b][i]) {
      book = 1;
      break;
    }
  }
  if (book == 1) {
    for (int i = 0; i < m; i++) {
      if (grid[a][i] == '#' && grid[b][i] == '#') {
        return 1;
      }
    }
  }
  return 0;
}
int main() {
  scanf("%d%d", &n, &m);
  getchar();
  memset(col, 0, sizeof(col));
  memset(row, 0, sizeof(row));
  memset(grid, 0, sizeof(grid));
  int flag = 0;
  for (int i = 0; i < n; i++) {
    gets(grid[i]);
  }
  for (int i = 0; i < n; i++) {
    for (int j = i + 1; j < n; j++) {
      flag = check(i, j);
      if (flag == 1) {
        printf("No\n");
        return 0;
      }
    }
  }
  if (flag == 0) {
    printf("Yes\n");
  }
  return 0;
}
