#include <bits/stdc++.h>
using namespace std;
using Grid = vector<string>;
int main() {
  int H, W;
  int v_d[4] = {-1, 0, 0, 1};
  int h_d[4] = {0, -1, 1, 0};
  cin >> H >> W;
  Grid grid(H);
  for (int i = 0; i < H; ++i) {
    cin >> grid.at(i);
  }
  bool is_paintable = true;
  for (int i = 0; i < H; ++i) {
    for (int j = 0; j < H; ++j) {
      if (grid.at(i).at(j) == '.') continue;
      int count = 0;
      for (int k = 0; k < 4; ++k) {
        int n_i = i + v_d[k];
        int n_j = j + h_d[k];
        if (n_i < 0 || H <= n_i || n_j < 0 || W <= n_j) continue;
        if (grid.at(n_i).at(n_j) == '#') ++count;
      }
      if (count == 0) {
        is_paintable = false;
        break;
      }
    }
  }
  if (is_paintable)
    cout << "Yes" << endl;
  else
    cout << "No" << endl;
}
