#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
struct edge {
  ll to, cost;
};
int x[] = {1, -1, 0, 0};
int y[] = {0, 0, 1, -1};
int main(int argc, char const* argv[]) {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int H, W;
  cin >> H >> W;
  vector<string> s(H);
  bool flag;
  for (ll i = 0; i < H; i++) cin >> s[i];
  for (ll i = 0; i < H; i++) {
    for (ll j = 0; j < W; j++) {
      flag = true;
      for (ll k = 0; k < 4; k++) {
        if (s[j][i] == '.') {
          flag = false;
          continue;
        } else if (i + x[k] < W && i + x[k] >= 0 && j + y[k] < H &&
                   j + y[k] >= 0) {
          if (s[j + y[k]][i + x[k]] == '#') flag = false;
        }
      }
      if (flag) {
        cout << "No" << endl;
        return 0;
      }
    }
  }
  cout << "Yes" << endl;
  return 0;
}
