#include <bits/stdc++.h>
using namespace std;
int matriz[1010][1010];
void verifica(int i, int j);
int main(void) {
  int n, m, d;
  d = 0;
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      char a;
      cin >> a;
      if (a == '#') {
        matriz[i][j] = 0;
        d++;
      } else
        matriz[i][j] = -1;
    }
  }
  for (int i = 1; i <= n - 2; i++) {
    for (int j = 1; j <= m - 2; j++) {
      verifica(i, j);
    }
  }
  int h = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (matriz[i][j] > 0) {
        h++;
      }
    }
  }
  if (d == 0) {
    cout << "YES" << endl;
  } else {
    if ((h == d) && (h != 0)) {
      cout << "YES" << endl;
    } else {
      cout << "NO" << endl;
    }
  }
}
void verifica(int a, int b) {
  int k = 1;
  if ((matriz[a - 1][b - 1] == -1) || (matriz[a - 1][b] == -1) ||
      (matriz[a - 1][b + 1] == -1) || (matriz[a][b - 1] == -1) ||
      (matriz[a][b + 1] == -1) || (matriz[a + 1][b - 1] == -1) ||
      (matriz[a + 1][b] == -1) || (matriz[a + 1][b + 1] == -1)) {
    k = 0;
  }
  if (k) {
    matriz[a - 1][b - 1] += 1;
    matriz[a - 1][b] += 1;
    matriz[a - 1][b + 1] += 1;
    matriz[a][b - 1] += 1;
    matriz[a][b + 1] += 1;
    matriz[a + 1][b - 1] += 1;
    matriz[a + 1][b] += 1;
    matriz[a + 1][b + 1] += 1;
  }
}
