#include <bits/stdc++.h>
using namespace std;
int main() {
  int h, w;
  cin >> h >> w;

  string G[h];
  for (int i = 0; i < h; i++) cin >> G[i];

// 周囲四方向の差分を持った配列
 int dx[4] = {0, 1, 0, -1};
 int dy[4] = {1, 0, -1, 0};

  bool can = true;
  for (int i = 0; i < h; i++) {
    for (int j = 0; j < w; j++) {
      if (G[i][j] == '#') {
        bool sharp = false;
        for (int d = 0; d < 4; d++) { //四方の確認
          if (i + dy[d] < 0 || h <= i + dy[d]) continue; //表外の確認
          if (j + dx[d] < 0 || w <= j + dx[d]) continue; //continueはそれ以下の処理は行わずfor loopを次に進める
          if (G[i + dy[d]][j + dx[d]] == '#') sharp = true; //四方の#の確認
        }
        if (sharp == false) can = false;
      }
    }
  }
  if(can)
    cout << "Yes" << endl;
  else
    cout << "No" << endl;
    return 0;
}
. 