#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
int main(int argc, char* argv[]) {
  cin.tie(0);
  ios::sync_with_stdio(0);
  cout << fixed << setprecision(20);
  int h, w;
  cin >> h >> w;
  vector<string> plane(h);
  for (auto& x : plane) cin >> x;
  queue<pii> nxt;
  vector<vector<bool>> check(h, vector<bool>(w, false));
  nxt.push(make_pair(0, 0));
  bool ans = true;
  while (!nxt.empty()) {
    int x = nxt.front().first, y = nxt.front().second;
    nxt.pop();
    if (x + 1 < w) nxt.push(make_pair(x + 1, y));
    if (y + 1 < h) nxt.push(make_pair(x, y + 1));
    if (check[y][x])
      continue;
    else
      check[y][x] = true;
    if (plane[y][x] == '.')
      continue;
    else {
      int count = 0;
      if (x + 1 < w && plane[y][x + 1] == '#') count++;
      if (x - 1 >= 0 && plane[y][x - 1] == '#') count++;
      if (y + 1 < h && plane[y + 1][x] == '#') count++;
      if (y - 1 >= 0 && plane[y - 1][x] == '#') count++;
      if (count == 0) {
        ans = false;
        break;
      }
    }
  }
  if (ans)
    cout << "Yes" << endl;
  else
    cout << "No" << endl;
  return 0;
}
