#include <bits/stdc++.h>
using namespace std;
bool compare_by_b(pair<string, int64_t> a, pair<string, int64_t> b) {
  if (a.second != b.second)
    return a.second < b.second;
  else
    return a.first < b.first;
}
bool my_compare(pair<string, int64_t> a, pair<string, int64_t> b) {
  if (a.first != b.first) return a.first < b.first;
  if (a.second != b.second)
    return a.second > b.second;
  else
    return true;
}
int64_t factorial(int64_t n) {
  int64_t x = 1;
  for (int64_t i = 1; i <= n; i++) x *= i;
  return x;
}
int64_t gcd(int64_t a, int64_t b) {
  if (a % b == 0)
    return (b);
  else
    return (gcd(b, a % b));
}
int64_t lcm(int64_t a, int64_t b) { return a / gcd(a, b) * b; }
int main() {
  int64_t h, w;
  cin >> h >> w;
  vector<string> s(h);
  for (int64_t i = 0; i < h; i++) cin >> s[i];
  if (h == 1 && w == 1) {
    if (s[0].at(0) == '.')
      cout << "Yes" << endl;
    else
      cout << "No" << endl;
    return 0;
  }
  for (int64_t i = 0; i < h; i++)
    for (int64_t j = 0; j < w; j++) {
      if (s[i].at(j) == '#') {
        if (i < h - 1 && s[i + 1].at(j) == '#') break;
        if (i > 0 && s[i - 1].at(j) == '#') break;
        if (j > 0 && s[i].at(j - 1) == '#') break;
        if (j < w - 1 && s[i].at(j + 1) == '#') break;
        cout << "No" << endl;
        return 0;
      }
    }
  cout << "Yes" << endl;
  return 0;
}
