#include <bits/stdc++.h>
using namespace std;
template <class T>
void read(T& x) {
  cin >> x;
}
void read(int& x) { scanf("%d", &x); }
void read(int64_t& x) { scanf("%lld", &x); }
void read(double& x) { scanf("%lf", &x); }
template <class T, class U, class... V>
void read(T& x, U& y, V&... z) {
  read(x);
  read(y, z...);
}
int main() {
  int h, w;
  read(h, w);
  vector<vector<char>> s(h + 2, vector<char>(w + 2));
  for (int i = (0); i < (w + 2); ++i) {
    s[0][i] = '.';
  }
  ios::sync_with_stdio(false);
  cin.tie(0);
  string tmp;
  for (int i = (0); i < (h); ++i) {
    cin >> tmp;
    s[i + 1][0] = '.';
    for (int j = (0); j < (w); ++j) s[i + 1][j + 1] = tmp[j];
    s[i + 1][w + 1] = '.';
  }
  for (int i = (0); i < (w + 2); ++i) {
    s[h + 1][i] = '.';
  }
  for (int i = (0); i < (h); ++i) {
    for (int j = (0); j < (w); ++j) {
      if (s[i + 1][j + 1] == '#') {
        if (s[i][j + 1] == '.' && s[i + 1][j] == '.' &&
            s[i + 1][j + 2] == '.' && s[i + 2][j + 1] == '.') {
          printf("No");
          return 0;
        }
      }
    }
  }
  printf("Yes");
  return 0;
}
