#include <bits/stdc++.h>
using namespace std;
int main() {
  int H, W;
  cin >> H >> W;
  vector<string> S(H);
  for (int i = 0; i < H; i++) cin >> S.at(i);
  vector<int> N(H);
  for (int j = 0; j < H; j++) {
    string T;
    T = S.at(j);
    int n = 0;
    for (int i = 0; i < W - 2; i++) {
      if ((T.at(i) == T.at(i + 2) == '.' && T.at(i + 1) == '#') ||
          (T.at(0) == '#' && T.at(1) == '.') ||
          (T.at(W - 2) == '.' && T.at(W - 1) == '#'))
        n++;
    }
    N.at(j) = n;
  }
  int sumN = 0;
  for (int i = 0; i < H; i++) sumN += N.at(i);
  if (sumN == 0)
    cout << "Yes" << endl;
  else if (sumN != 0) {
    vector<string> U(W);
    for (int j = 0; j < W; j++) {
      string R;
      for (int i = 0; i < H; i++) {
        string T;
        T = S.at(i);
        R.at(i) = T.at(j);
      }
      U.at(j) == R;
    }
    vector<int> M(W);
    for (int j = 0; j < W; j++) {
      string R;
      R = U.at(j);
      int n = 0;
      for (int i = 0; i < H - 2; i++) {
        if ((R.at(i) == R.at(i + 2) == '.' && R.at(i + 1) == '#') ||
            (R.at(0) == '#' && R.at(1) == '.') ||
            (R.at(H - 2) == '.' && R.at(H - 1) == '#'))
          n++;
      }
      M.at(j) = n;
    }
    int sumM = 0;
    for (int i = 0; i < H; i++) sumM += M.at(i);
    if (sumM == 0) cout << "Yes" << endl;
  } else
    cout << "No" << endl;
}
