#include <bits/stdc++.h>
using namespace std;
int judge(vector<char> maps, int h, int w, int i, int j) {
  if (j < w && maps[i * w + j + 1] == '#') return 0;
  if (j > 0 && maps[i * w + j - 1] == '#') return 0;
  if (i < h && maps[(i + 1) * w + j] == '#') return 0;
  if (i > 0 && maps[(i - 1) * w + j] == '#') return 0;
  return 1;
}
int main(void) {
  int H;
  int W, w;
  int result = 0;
  char read;
  vector<char> maps;
  cin >> H >> W;
  maps.resize(H * W);
  w = W - 1;
  for (int i = 0; i < H; i++) {
    for (int j = 0; j < W; j++) {
      cin >> maps[i * w + j];
    }
  }
  for (int i = 0; i < H; i++) {
    for (int j = 0; j < W; j++) {
      read = maps[i * w + j];
      if (maps[i * w + j] == '#') result = judge(maps, H, w, i, j);
      if (result == 1) break;
    }
  }
  if (result == 1)
    cout << "No" << endl;
  else
    cout << "Yes" << endl;
  return 0;
}
