#include <bits/stdc++.h>
using namespace std;
int in() {
  int temp;
  scanf("%d", &temp);
  return temp;
}
long long lin() {
  long long temp;
  scanf("%lld", &temp);
  return temp;
}
int look_site(int i, int j, int H, int W) {
  if (i < 0) return 0;
  if (j < 0) return 0;
  if (i >= H) return 0;
  if (j >= W) return 0;
  return 1;
}
int main() {
  int H = in();
  int W = in();
  vector<char> s[H];
  char temp;
  for (auto i = 0; i < H; i++) {
    for (auto j = 0; j < W; j++) {
      cin >> temp;
      s[i].push_back(temp);
    }
  }
  for (auto i = 0; i < H; i++) {
    for (auto j = 0; j < W; j++) {
      int count = 0;
      if (s[i][j] != '#') continue;
      if (look_site(i - 1, j, H, W)) {
        count += (s[i][j] == '#');
      }
      if (look_site(i + 1, j, H, W)) {
        count += (s[i][j] == '#');
      }
      if (look_site(i, j - 1, H, W)) {
        count += (s[i][j] == '#');
      }
      if (look_site(i, j + 1, H, W)) {
        count += (s[i][j] == '#');
      }
      if (count == 0) {
        cout << "No" << endl;
        return 0;
      }
    }
  }
  cout << "Yes" << endl;
  return 0;
}
