#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 100001;
vector<int> dp(MAX_N, -1);
bool check(int x, int y, int max_x, int max_y, vector<vector<char>> map) {
  bool ans = false;
  if (x >= 1) {
    ans |= map[x - 1][y] == '#';
  }
  if (y >= 1) {
    ans |= map[x][y - 1] == '#';
  }
  if (x < max_x - 1) {
    ans |= map[x + 1][y] == '#';
  }
  if (y < max_y - 1) {
    ans |= map[x][y + 1] == '#';
  }
  return ans;
}
int main(int argc, const char* argv[]) {
  int max_x, max_y;
  cin >> max_x >> max_y;
  vector<vector<char>> map(max_y, vector<char>(max_x));
  for (int i = 0; i < max_y; i++) {
    for (int j = 0; j < max_x; j++) {
      cin >> map[i][j];
    }
  }
  bool ans = true;
  for (int i = 0; i < max_y; i++) {
    for (int j = 0; j < max_x; j++) {
      if (map[i][j] == '#') {
        ans &= check(i, j, max_x, max_y, map);
      }
    }
  }
  if (ans) {
    cout << "Yes" << endl;
  } else {
    cout << "No" << endl;
  }
  return 0;
}
