#include <bits/stdc++.h>
using namespace std;
int main(void) {
  int H, W, a;
  a = 1;
  cin >> H >> W;
  vector<vector<int> > b;
  b = vector<vector<int> >(W, vector<int>(H, 0));
  for (int i = 0; i < W; i++) {
    for (int j = 0; j < H; j++) {
      char x;
      string y = "#";
      string z = ".";
      cin >> x;
      if (x == y.at(0)) {
        b[i][j] = 1;
      } else if (x == z.at(0)) {
        b[i][j] = 0;
      }
    }
  }
  for (int i = 0; i < W; i++) {
    for (int j = 0; j < H; j++) {
      if (b[i][j] == 1) {
        if (i == 0 && j == 0 && b[i + 1][j] == 0 && b[i][j + 1] == 0) {
          a = 0;
          continue;
        } else if (i == W - 1 && j == H - 1 && b[i - 1][j] == 0 &&
                   b[i][j + 1] == 0) {
          a = 0;
          continue;
        } else if (i == 0 && j == H - 1 && b[i + 1][j] == 0 &&
                   b[i][j - 1] == 0) {
          a = 0;
          continue;
        } else if (i == W - 1 && j == 0 && b[i][j + 1] == 0 &&
                   b[i - 1][j] == 0) {
          a = 0;
          continue;
        } else if (i == 0 && b[i][j + 1] == 0 && b[i][j - 1] == 0 &&
                   b[i + 1][j] == 0) {
          a = 0;
          continue;
        } else if (j == 0 && b[i][j + 1] == 0 && b[i - 1][j] == 0 &&
                   b[i + 1][j] == 0) {
          a = 0;
          continue;
        } else if (i == W - 1 && b[i][j - 1] == 0 && b[i - 1][j] == 0 &&
                   b[i][j + 1] == 0) {
          a = 0;
          continue;
        } else if (j == H - 1 && b[i][j - 1] == 0 && b[i - 1][j] == 0 &&
                   b[i + 1][j] == 0) {
          a = 0;
          continue;
        } else if (b[i][j + 1] == 0 && b[i][j - 1] == 0 && b[i - 1][j] == 0 &&
                   b[i + 1][j] == 0) {
          a = 0;
          continue;
        }
      }
    }
    if (a == 0) {
      break;
    }
  }
  if (a == 0) {
    cout << "No";
  } else if (a == 1) {
    cout << "Yes";
  }
}
