#include <bits/stdc++.h>
using namespace std;
const int N = 1005;
char s[N][N];
char temp[N][N];
int dx[] = {0, 0, 1, -1, 1, 1, -1, -1};
int dy[] = {1, -1, 0, 0, 1, -1, 1, -1};
int r, c;
int ok(int x, int y) {
  int cnt = 0;
  for (int i = 0; i < 8; i++) {
    cnt += (s[x + dx[i]][y + dy[i]] == '#');
  }
  if (cnt == 8)
    return 1;
  else
    return 0;
}
void paint(int x, int y) {
  for (int i = 0; i < 8; i++) {
    temp[x + dx[i]][y + dy[i]] = '#';
  }
}
int main() {
  scanf("%d %d", &r, &c);
  for (int i = 0; i < r; i++) scanf("%s", s[i]);
  for (int i = 0; i < r; i++) {
    for (int j = 0; j < c; j++) temp[i][j] = '.';
  }
  int k = 5;
  while (k--) {
    for (int i = 1; i < r - 1; i++) {
      for (int j = 1; j < c - 1; j++) {
        if (ok(i, j)) {
          paint(i, j);
        }
      }
    }
  }
  for (int i = 0; i < r; i++) {
    for (int j = 0; j < c; j++) {
      if (temp[i][j] != s[i][j]) {
        puts("NO");
        return 0;
      }
    }
  }
  puts("YES");
  return 0;
}
