#include <bits/stdc++.h>
using namespace std;
const int MAXN = 50;
const int MAXM = 50;
int fx[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
bool need[MAXN + 1][MAXM + 1];
int main() {
  freopen("c.in", "r", stdin);
  freopen("c.out", "w", stdout);
  int N;
  int M;
  scanf("%d%d", &N, &M);
  for (int i = 1; i <= N; i++) {
    char buff[MAXM + 1];
    scanf("%s", buff);
    for (int j = 0; j < M; j++) {
      if (buff[j] == '#') need[i][j + 1] = true;
    }
  }
  for (int i = 1; i <= N; i++) {
    for (int j = 1; j <= M; j++) {
      if (need[i][j]) {
        bool have = false;
        for (int k = 0; k < 4; k++) {
          if (need[i + fx[k][0]][j + fx[k][1]]) have = true;
        }
        if (!have) {
          printf("No\n");
          return 0;
        }
      }
    }
  }
  printf("Yes\n");
  return 0;
}
