#include <bits/stdc++.h>
using namespace std;

int main() {
  int h, w;
  cin >> h >> w;
  
  string s;
  vector<vector<char>> v(h+2, vector<char>(w+2));
  for(int i=0; i<h+2; i++) {
    if(i==0 || i==h+1) for(int j=0; j<w+2; j++) v[i][j] = '.';
    else {
      cin >> s;
      for(int j=0; j<w+2; j++) {
        if(j==0 || j==w+1) v[i][j] = '.';
        else v[i][j] = s[j-1];
      }
    }
  }
  
  bool check = true;
  for(int i=0; i<h+2; i++) {
    for(int j=0; j<w+2; j++) {
      if(v[i][j]=='#') {
        if(v[i-1][j]!='#' && v[i+1][j]!='#' && v[i][j-1]!='#' && v[i][j+1]!='#') check = false;
      }
    }
  }

  if(check) cout << "Yes" << endl;
  else cout << "No" << endl;
  return 0;
}
#include <iostream>
#include <vector>
//#define rep(i,n) for(int i = 0; i , (n); ++i)
using ll = long long;
using namespace std;

int sum(int n) {
    if (n == 0) {
        return 0;
    }

    int s = sum(n - 1);
    return s + n;
}
int main() {
    int N, W;
        cin >> N >> W;
        vector<vector<char>>A(N, vector<char>(W));
        
        for (int i = 0;i < N;i++) {
            for (int j = 0;j < W;j++) {
                cin >> A.at(i).at(j);
            }
        }
        bool hantei = true;
        for (int i = 0;i < N;i++) {
            for (int j = 0;j < W;j++){
                    if (j>0&&j<(W-1)&&i>0&&i<(N-1)&&A.at(i).at(j) == '#'&&A.at(i + 1).at(j) == '.' && A.at(i - 1).at(j) == '.' &&
                        A.at(i).at(j + 1) == '.' && A.at(i).at(j - 1) == '.') {
                         hantei=false;
                             break;
                    }
            }
            if (hantei == false) {
                break;
            }
        }
        if (hantei) {
            cout << "Yes";
        }
        else {
            cout << "No";
        }
}
