#include <bits/stdc++.h>
int H, W;
int dx[4]{0, -1, 0, 1};
int dy[4]{1, 0, -1, 0};
bool check(std::vector<std::string>& C, int h, int w) {
  bool f{false};
  if (C[h][w] == '#') {
    for (int di = 0; di < 4; di++) {
      if (di == 0 && h == H - 1) continue;
      if (di == 1 && w == 0) continue;
      if (di == 2 && h == 0) continue;
      if (di == 3 && w == W - 1) continue;
      if (C[h + dy[di]][w + dx[di]] == '#') {
        f = !f;
        break;
      }
    }
  }
  if (C[h][w] == '.' || f)
    return true;
  else
    return false;
}
int main() {
  std::cin >> H >> W;
  std::vector<std::string> C(H);
  for (int i = 0; i < H; i++) std::cin >> C[i];
  bool f{true};
  for (int h = 0; h < H; h++) {
    for (int w = 0; w < W; w++) {
      if (!check(C, h, w)) {
        f = !f;
        break;
      }
    }
  }
  if (f)
    std::cout << "Yes" << std::endl;
  else
    std::cout << "No" << std::endl;
}
