#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (int)(n); ++i)
#define rep1(i, n) for (int i = 1; i <= (int)(n); ++i)
#define irep(i, a, n) for (int i = a; i < (int)(n); ++i)
#define rrep(i, n) for (int i = (int)(n)-1; i >= 0; --i)
#define rrep1(i, n) for (int i = (int)(n); i >= 1; --i)
#define allrep(V, v) for (auto&& V : v)
#define all(x) (x).begin(), (x).end()
using lint = long long;
const int INF = 1 << 29;
const double EPS = 1e-9;
using namespace std;
#include "../../Lib/cout_stl.cpp"

int main(void) {
  int h, w;
  cin >> h >> w;
  vector<vector<bool>> canvas(h + 2, vector<bool>(w + 2));
  rep1(i, h) {
    rep1(j, w) {
      char tmp;
      cin >> tmp;
      if (tmp == '#') canvas[i][j] = true;
    }
  }
  vector<pair<int, int>> d{{0, -1}, {0, 1}, {-1, 0}, {1, 0}};
  bool flag = true;
  rep1(i, h) {
    rep1(j, w) {
      bool check = false;
      if (!canvas[i][j]) continue;
      allrep(D, d) {
        if (canvas[i + D.first][j + D.second]) {
          check = true;
          break;
        }
      }
      if (!check) flag = false;
    }
  }
  cout << (flag ? "Yes" : "No") << endl;
  return 0;
}