#include <bits/stdc++.h>
using namespace std;
int main() {
  int H, W;
  cin >> H >> W;
  vector<vector<string>> canvas;
  for (int i = 0; i < H; i++) {
    vector<string> s;
    for (int j = 0; j < W; j++) {
      string x;
      cin >> x;
      s.push_back(x);
    }
    canvas.push_back(s);
  }
  int flag = 0;
  for (int i = 0; i < H; i++) {
    string up;
    string down;
    string left;
    string right;
    for (int j = 0; j < W; j++) {
      if (i > 0) {
        up = canvas[i - 1][j];
      }
      if (i < H - 1) {
        down = canvas[i + 1][j];
      }
      if (j > 0) {
        left = canvas[i][j - 1];
      }
      if (j < W - 1) {
        right = canvas[i][j + 1];
      }
      if (canvas[i][j] == "#") {
        if (i == 0 && j == 0) {
          if (right == "." && down == ".") {
            flag = 1;
          }
        }
        if (i == 0 && j == W - 1) {
          if (left == "." && down == ".") {
            flag = 1;
          }
        }
        if (i == H - 1 && j == 0) {
          if (right == "." && up == ".") {
            flag = 1;
          }
        }
        if (i == H - 1 && j == W - 1) {
          if (left == "." && up == ".") {
            flag = 1;
          }
        }
        if (i == 0 && 0 < j < W - 1) {
          if (right == "." && left == "." && down == ".") {
            flag = 1;
          }
        }
        if (i == H - 1 && 0 < j < W - 1) {
          if (right == "." && left == "." && up == ".") {
            flag = 1;
          }
        }
        if (0 < i < H - 1 && j == 0) {
          if (up == "." && down == "." && right == ".") {
            flag = 1;
          }
        }
        if (0 < i < H - 1 && j == W - 1) {
          if (up == "." && down == "." && left == ".") {
            flag = 1;
          }
        }
      }
    }
  }
  if (flag == 1) {
    cout << "No" << endl;
  } else {
    cout << "Yes" << endl;
  }
  return 0;
}
