#include <bits/stdc++.h>
using namespace std;
using LLI = long long int;
vector<int> dir_x = {0, 0, 1, 1, 1, -1, -1, -1};
vector<int> dir_y = {1, -1, 1, 0, -1, 1, 0, -1};
vector<int> dir_x2 = {0, 0, 1, -1};
vector<int> dir_y2 = {1, -1, 0, 0};
int main(void) {
  int H, W;
  bool res = true, judge = true;
  cin >> H >> W;
  vector<string> vec(H + 2);
  string a;
  for (int i = 0; i < W + 2; i++) {
    vec[0] += '.';
  }
  for (int i = 1; i < H + 1; i++) {
    vec[i] += '.';
    cin >> a;
    vec[i] += a;
    vec[i] += '.';
  }
  for (int i = 0; i < W + 2; i++) {
    vec[H + 1] += '.';
  }
  for (int i = 1; i < W + 1; i++) {
    for (int j = 1; j < H + 1; j++) {
      if (vec[i][j] == '#') {
        judge = false;
        for (int k = 0; k < dir_x2.size(); k++) {
          if (vec[i + dir_x2[k]][j + dir_y2[k]] == '#') {
            judge = true;
            break;
          }
        }
      }
      if (judge == false) {
        res = false;
        break;
      }
    }
  }
  if (res) {
    cout << "Yes" << endl;
  } else {
    cout << "No" << endl;
  }
}
