#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const long long INFL = 0x3f3f3f3f3f3f3f3fLL;
const double EPS = 1e-9;
const int DX[] = {1, 0, -1, 0}, DY[] = {0, -1, 0, 1};
const string YES = "Yes";
const string NO = "No";
void solve(long long H, long long W, std::vector<std::string> s) {
  for (int i = 0; i < (H); i++) {
    for (int j = 0; j < (W); j++) {
      if (s[i][j] == '#') {
        bool flag = false;
        for (int m = 0; m < (4); m++) {
          int mx = j + DX[m];
          int my = i + DY[m];
          if ((0 <= (mx) && 0 <= (my) && (mx) < (W) && (my) < (H)) &&
              s[my][mx] == '#') {
            flag = true;
          }
        }
        if (!flag) {
          cout << NO << endl;
          return;
        }
      }
    }
  }
  cout << YES << endl;
}
int main() {
  long long H;
  scanf("%lld", &H);
  long long W;
  scanf("%lld", &W);
  std::vector<std::string> s(W);
  for (int i = 0; i < W; i++) {
    std::cin >> s[i];
  }
  solve(H, W, std::move(s));
  return 0;
}
