#include <string>
#include <queue>
#include <stack>
#include <vector>
#include <sstream>
#include <algorithm>
#include <deque>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <list>
#include <cstdio>
#include <iostream>
#include <cmath>
#include <climits>
#include <bitset>
#include <functional>
#include <numeric>
#include <ctime>
#include <cassert>
#include <cstring>
#include <fstream>
 
using namespace std;
int H,W;
char s[60][60];
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
int main(void){
  cin>>H>>W;
  for(int i=0;i<H;i++){
  scanf("%s",&s[i]);}
  bool ans=true;
  for(int i=0;i<H;i++){
    for(int j=0;j<W;j++){
      if(s[i][j]=='#'){
        bool found=false;
        for(int k=0;k<4;k++){
          int i2=i+dx[k];
          int j2=j+dy[k];
        if(i2>=0&&i2<H&&j2>=0&&j2<W&&s[i2][j2]=='#'){
          found=true;
          }
         }
        if(!found) ans=false;
        }
      }
    }
cout<<(ans ？ "Yes":"No")<<endl;
  return 0;
}  
        
