#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e18;
const long long MOD = 1e9 + 7;
const double pi = acos(-1);
const int SIZE = 1 << 17;
int dx[] = {1, 0, -1, 0}, dy[] = {0, 1, 0, -1}, alp[30];
long long fac[200005], finv[200005], inv[200005];
vector<long long> dij;
struct edge {
  long long to, cost;
};
vector<vector<edge> > G;
long long mod_pow(long long a, long long b) {
  long long res = 1;
  while (b) {
    if (b & 1) {
      res = res * a % MOD;
    }
    a = a * a % MOD;
    b >>= 1;
  }
  return res;
}
void addedge(int from, int to, int cost) {
  G[from].push_back({to, cost});
  G[to].push_back({from, cost});
}
char k[55][55];
int main() {
  int a, b;
  cin >> a >> b;
  for (int i = 1; i <= a; ++i) {
    for (int j = 1; j <= b; ++j) {
      cin >> k[i][j];
    }
  }
  for (int i = 1; i <= a; ++i) {
    int mon = 0;
    for (int j = 1; j <= b; ++j) {
      if (k[i][j] == '.') {
        continue;
      }
      for (int kk = 0; kk < 4; ++kk) {
        for (int l = 0; l < 4; ++l) {
          if (k[i + dx[kk]][j + dy[l]] == '#' && dx[kk] != dy[l]) {
            ++mon;
          }
        }
      }
      if (mon == 0) {
        cout << "No" << endl;
        return 0;
      }
    }
  }
  cout << "Yes" << endl;
}
