#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e3 + 50;
char s[maxn][maxn];
int m1[maxn][maxn];
int m2[maxn][maxn];
int main() {
  int n, m;
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    cin >> s[i];
  }
  for (int k = 0; k < n; k++) {
    for (int j = 0; j < m; j++) {
      if (s[k][j] == '#')
        m1[k][j] = 1;
      else
        m1[k][j] = 0;
    }
  }
  for (int i = 1; i < n - 1; i++) {
    for (int j = 1; j < m - 1; j++) {
      if (m1[i - 1][j - 1] == 0 || m1[i - 1][j] == 0 || m1[i - 1][j + 1] == 0 ||
          m1[i][j - 1] == 0 || m1[i][j + 1] == 0 || m1[i + 1][j - 1] == 0 ||
          m1[i + 1][j] == 0 || m1[i + 1][j + 1] == 0)
        continue;
      else {
        m2[i - 1][j - 1] = m2[i - 1][j] = m2[i - 1][j + 1] = m2[i][j - 1] =
            m2[i][j + 1] = m2[i + 1][j - 1] = m2[i + 1][j] = m2[i + 1][j + 1] =
                1;
      }
    }
  }
  int o = 1;
  for (int k = 0; k < n; k++) {
    for (int j = 0; j < m; j++) {
      if (m1[k][j] != m2[k][j]) o = 0;
    }
  }
  if (!o)
    cout << "NO" << endl;
  else {
    cout << "YES" << endl;
  }
}
