#include <bits/stdc++.h>
int main() {
  int H, W;
  scanf("%d %d", &H, &W);
  char grid[H + 2][W + 2];
  int i, j;
  for (i = 1; i <= H; i++) {
    scanf("%s", grid[i]);
  }
  char tmp1, tmp2;
  for (i = 1; i <= H; i++) {
    tmp1 = grid[i][0];
    for (j = 0; j < W; j++) {
      tmp2 = grid[i][j + 1];
      grid[i][j + 1] = grid[i][j];
      grid[i][j] = tmp1;
      tmp1 = tmp2;
    }
  }
  for (i = 0; i <= H + 1; i++) {
    grid[i][0] = '.';
    grid[i][W + 1] = '.';
  }
  for (j = 1; j <= W; j++) {
    grid[0][j] = '.';
    grid[H + 1][j] = '.';
  }
  int check = 1;
  for (i = 1; i <= H; i++) {
    for (j = 1; j <= W; j++) {
      if (grid[i][j] == '#') {
        if (!(grid[i - 1][j - 1] == '#' && grid[i + 1][j - 1] == '#' &&
              grid[i - 1][j + 1] == '#' && grid[i + 1][j + 1] == '#')) {
          check == 0;
          break;
        }
      }
    }
    if (check == 0) break;
  }
  if (check == 1) {
    printf("Yes");
  } else {
    printf("No");
  }
}
