#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vi = vector<ll>;
using vvi = vector<vi>;
template <class T>
bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool chmin(T &a, const T &b) {
  if (b < a) {
    a = b;
    return 1;
  }
  return 0;
}
void Main() {
  ll H, W;
  cin >> H >> W;
  vector<string> s(H + 2);
  for (ll i = 0, i_len = (2); i < i_len; ++i) {
    for (ll j = 0, j_len = (W + 2); j < j_len; ++j) {
      s[0][j] = '.';
      s[H + 1][j] = '.';
    }
  }
  for (ll i = 0, i_len = (H); i < i_len; ++i) {
    s[i + 1][0] = '.';
    s[i + 1][W + 1] = '.';
    for (ll j = 0, j_len = (W); j < j_len; ++j) {
      cin >> s[i + 1][j + 1];
    }
  }
  for (ll i = 0, i_len = (H); i < i_len; ++i) {
    for (ll j = 0, j_len = (W); j < j_len; ++j) {
      if (s[i + 1][j + 1] == '.') {
        continue;
      }
      ll count = 0;
      if (s[i + 1 - 1][j + 1] == '#') {
        count++;
      }
      if (s[i + 1][j + 1 - 1] == '#') {
        count++;
      }
      if (s[i + 1 + 1][j + 1] == '#') {
        count++;
      }
      if (s[i + 1][j + 1 + 1] == '#') {
        count++;
      };
      if (count == 0) {
        cout << "No";
        return;
      }
    }
  }
  cout << "Yes";
}
signed main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  Main();
  cout << flush;
}
