#include <bits/stdc++.h>
bool possible(const std::vector<std::string>& ss, const int h, const int w) {
  const std::vector<int> dx = {1, 0, -1, 0};
  const std::vector<int> dy = {0, 1, 0, -1};
  bool ret = false;
  for (int iRow = 0; iRow < h; ++iRow) {
    for (int jCol = 0; jCol < w; ++jCol) {
      if (ss[iRow][jCol] == '.') continue;
      for (int i = 0; i < 4; ++i) {
        const int currx = iRow + dx[i];
        const int curry = jCol + dy[i];
        if (currx < 0 || currx >= h) continue;
        if (curry < 0 || curry >= w) continue;
        if (ss[currx][curry] == '#') {
          ret = true;
          break;
        }
      }
    }
  }
  return true;
}
int main() {
  int h, w;
  std::cin >> h >> w;
  std::vector<std::string> ss(h);
  for (int i = 0; i < h; ++i) {
    std::cin >> ss[i];
  }
  const bool isPossible = possible(ss, h, w);
  std::cout << (isPossible ? "Yes" : "No") << "\n";
  int tmp;
  std::cin >> tmp;
  return 0;
}
