#include <bits/stdc++.h>
using namespace std;
bool can_acheive(vector<string>& s, int i, int j);
int main() {
  int h, w;
  cin >> h >> w;
  vector<string> s(h);
  for (int i = 0; i < h; ++i) cin >> s[i];
  for (int i = 0; i < h; ++i) {
    for (int j = 0; j < w; ++j) {
      if (s[i][j] == '.') continue;
      bool result = can_acheive(s, i, j);
      if (!result) {
        cout << "No\n";
        return 0;
      }
    }
  }
  cout << "Yes\n";
}
bool can_acheive(vector<string>& s, int i, int j) {
  int h = s.size();
  int w = s[0].length();
  if (i > 1 && s[i - 1][j] == '#') return true;
  if (i < (h - 1) && s[i + 1][j] == '#') return true;
  if (j > 1 && s[i][j - 1] == '#') return true;
  if (j < (w - 1) && s[i][j + 1] == '#') return true;
  return false;
}
