#include <bits/stdc++.h>
using namespace std;
using Graph = vector<vector<int>>;
int main() {
  int h, w;
  cin >> h >> w;
  vector<vector<char>> g(h, vector<char>(w));
  queue<pair<int, int>> q;
  int dx[] = {1, 0, -1, 0};
  int dy[] = {0, 1, 0, -1};
  for (long long i = 0; i < (h); ++i) {
    for (long long j = 0; j < (w); ++j) {
      cin >> g[i][j];
      if (g[i][j] == '#') {
        q.push(pair<int, int>(i, j));
      }
    }
  }
  bool jud = true;
  while (!q.empty()) {
    bool tmp = false;
    pair<int, int> p = q.front();
    q.pop();
    for (long long i = 0; i < (4); ++i) {
      if (p.first + dx[i] <= -1 || p.first + dx[i] >= w) continue;
      if (p.second + dy[i] <= -1 || p.second + dy[i] >= h) continue;
      if (g[p.first + dx[i]][p.second + dy[i]] == '#') tmp = true;
    }
    if (!tmp) {
      jud = false;
      break;
    }
  }
  if (jud)
    cout << "Yes" << endl;
  else
    cout << "No" << endl;
}
