#include <bits/stdc++.h>
using namespace std;
int main() {
  int H, W;
  vector<vector<char>> s(H, vector<char>(W));
  for (int i = 0; i < H; i++) {
    for (int j = 0; j < W; j++) {
      cin >> s[i][j];
    }
  }
  bool jud = true;
  if ((s[0][0] == '#' && s[0][1] == '.' && s[1][0] == '.') ||
      (s[0][W - 1] == '#' && s[1][W - 1] == '.' && s[0][W - 2] == '.') ||
      (s[H - 1][0] == '#' && s[H - 1][1] == '.' && s[H - 2][0] == '.') ||
      (s[H - 1][W - 1] == '#' && s[H - 2][W - 1] == '.' &&
       s[H - 1][W - 2] == '.')) {
    jud = false;
  }
  if (jud) {
    for (int i = 1; i < H - 1; i++) {
      if ((s[i][0] == '#' && s[i][1] == '.' && s[i - 1][0] == '.' &&
           s[i + 1][0] == '.') ||
          (s[i][W - 1] == '#' && s[i][W - 2] == '.' && s[i - 1][W - 1] == '.' &&
           s[i + 1][W - 1] == '.')) {
        jud = false;
        break;
      }
    }
    for (int i = 1; i < W - 1; i++) {
      if ((s[0][i] == '#' && s[0][i + 1] == '.' && s[0][i - 1] == '.' &&
           s[1][i] == '.') ||
          (s[H - 1][i] == '#' && s[H - 1][i + 1] == '.' &&
           s[H - 1][i - 1] == '.' && s[H - 2][i] == '.')) {
        jud = false;
        break;
      }
    }
  }
  if (jud) {
    for (int i = 1; i < H - 1; i++) {
      for (int j = 1; j < W - 1; j++) {
        if (s[i][j] == '#' && s[i + 1][j] == '.' && s[i - 1][j] == '.' &&
            s[i][j + 1] == '.' && s[i][j - 1] == '.') {
          jud = false;
          break;
        }
      }
    }
  }
  cout << (jud ? "Yes" : "No") << endl;
}
