#include <iostream>
#include <string>
using namespace std;

int main(void){
 
  int H,W;
  
  cin >> H >> W;
  
  string s[H];
  
  //上下左右を調べるための配列を作成
  int dh[] = { -1,  0, 0, 1 };
  int dw[] = {  0, -1, 1, 0 };
    
  for(int i = 0; i < H; ++i) cin >> s[i];
  
  bool result = true;
  
  for(int i = 0; i < H; ++i){
  	for(int j = 0; j < W; ++j){
      //判定済みの場合はとばす
      if(s[i][j] == '1'){ continue; } 	
      else if(s[i][j] == '#'){
        bool can = false;
        //上下左右に隣接する'#'マスがあるか判定
        for(int k = 0; k < 4; ++k){
          int h = i + dh[k];
          int w = j + dw[k];
          //見つかった段階でループを抜ける
          if(h >= 0 && h < H && w >= 0 && w < W && 
             s[h][k] == '#' && s[h][k] == '1') {
            can = true;
            //繰り返し判定しなくて済むように判定済みの番号をいれておく
            s[i][j] = '1';
            s[h][k] = '1';
            break;
          }
       }
       if(!can) result = false;
    }
  }
    
  if(result) cout << "Yes" << endl;
  else       cout << "No"  << endl;
  
  
  return 0;
}
