#include <bits/stdc++.h>
using namespace std;
char M[100][100];
int val[100][100], vis[100][100];
int main() {
  int H, W;
  scanf("%d%d", &H, &W);
  getchar();
  for (int i = 1; i <= H; i++) gets(M[i] + 1);
  memset(val, 0, sizeof(val));
  memset(vis, 0, sizeof(vis));
  for (int i = 1; i <= H; i++)
    for (int j = 1; j <= W; j++)
      if (M[i][j] == '#') val[i][j] = 1;
  for (int i = 1; i <= H; i++)
    for (int j = 2; j <= W; j++)
      if (M[i][j] == '#' && M[i][j - 1] == '#') vis[i][j] = vis[i][j - 1] = 1;
  for (int j = 1; j <= W; j++)
    for (int i = 2; i <= H; i++)
      if (M[i][j] == '#' && M[i - 1][j] == '#') vis[i][j] = vis[i - 1][j] = 1;
  bool ans = true;
  for (int i = 1; i <= H; i++)
    for (int j = 1; j <= W; j++)
      if (val[i][j] != vis[i][j]) ans = false;
  printf("%s\n", ans ? "Yes" : "No");
  return 0;
}
