#include <bits/stdc++.h>
using namespace std;
int H, W;
unsigned long long int canvas[52];
int main() {
  cin >> H >> W;
  string s;
  for (int h = 0; h < H; h++) {
    cin >> s;
    for (int w = 0; w < W; w++) {
      canvas[h + 1] |= (s[w] == '#') << (w + 1);
    }
  }
  bool possible = true;
  for (int i = 1; i < 52; i++) {
    auto notAdjacent = canvas[i] & (canvas[i] ^ canvas[i - 1]) &
                       (canvas[i] ^ (canvas[i] >> 1)) &
                       (canvas[i] ^ canvas[i] << 1) &
                       (canvas[i] ^ canvas[i + 1]);
    if (notAdjacent != 0) {
      possible = false;
      break;
    }
  }
  cout << (possible ? "Yes" : "No") << endl;
  return 0;
}
