#include <bits/stdc++.h>
using namespace std;
int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
signed main() {
  int h, w;
  cin >> h >> w;
  vector<vector<char>> a(w, vector<char>(h));
  queue<pair<int, int>> que, next_que;
  for (int i = 0; i < h; ++i) {
    for (int j = 0; j < w; ++j) {
      cin >> a[i][j];
      if (a[i][j] == '#') {
        que.push(make_pair(i, j));
      }
    }
  }
  while (!que.empty()) {
    pair<int, int> e = que.front();
    que.pop();
    int i = e.first, j = e.second;
    bool connected = false;
    for (int k = 0; k < 4; ++k) {
      if (i + dx[k] < w and i + dx[k] >= 0 and j + dy[k] < h and
          j + dy[k] >= 0) {
        if (a[i + dx[k]][j + dy[k]] == '#') {
          connected = true;
        }
      }
    }
    if (!connected) {
      cout << "No" << endl;
      return 0;
    }
  }
  cout << "Yes" << endl;
}
