#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
bool Check(char *p,int H,int W){
    
    for(int i=0;i<H;i++){
        for(int j=0;j<W;j++){
            if(*(p + i * W + j) == '#') return false;
        }
    }
    
    return true;
}

void My_Piant(char *p,int i,int j,int H,int W){
    
    if(*(p + i * W + j) != '.'){
        if(i == 0){
            if(j == 0){
                if(*(p + i * W + (j+1)) == '#' || *(p + i * W + (j+1)) == '1'){*(p + i * W + (j+1)) = '1'; *(p + i * W + j) = '1';}
                if(*(p + (i+1) * W + j) == '#' || *(p + (i+1) * W + j) == '1'){*(p + (i+1) * W + j) = '1'; *(p + i * W + j) = '1';}
            }
            else if(j == W-1){
                if(*(p + i * W + (j-1)) == '#' || *(p + i * W + (j-1)) == '1'){*(p + i * W + (j-1)) = '1'; *(p + i * W + j) = '1';}
                if(*(p + (i+1) * W + j) == '#' || *(p + (i+1) * W + j) == '1'){*(p + (i+1) * W + j) = '1'; *(p + i * W + j) = '1';}
            }
            else{
                if(*(p + i * W + (j-1)) == '#' || *(p + i * W + (j-1)) == '1'){*(p + i * W + (j-1)) = '1'; *(p + i * W + j) = '1';}
                if(*(p + i * W + (j+1)) == '#' || *(p + i * W + (j+1)) == '1'){*(p + i * W + (j+1)) = '1'; *(p + i * W + j) = '1';}
                if(*(p + (i+1) * W + j) == '#' || *(p + (i+1) * W + j) == '1'){*(p + (i+1) * W + j) = '1'; *(p + i * W + j) = '1';}
            }
        }
        else if(i == H-1){
            if(j == 0){
                if(*(p + i * W + (j+1)) == '#' || *(p + i * W + (j+1)) == '1'){*(p + i * W + (j+1)) = '1'; *(p + i * W + j) = '1';}
                if(*(p + (i-1) * W + j) == '#' || *(p + (i-1) * W + j) == '1'){*(p + (i-1) * W + j) = '1'; *(p + i * W + j) = '1';}
            }
            else if(j == W-1){
                if(*(p + i * W + (j-1)) == '#' || *(p + i * W + (j-1)) == '1'){*(p + i * W + (j-1)) = '1'; *(p + i * W + j) = '1';}
                if(*(p + (i-1) * W + j) == '#' || *(p + (i-1) * W + j) == '1'){*(p + (i-1) * W + j) = '1'; *(p + i * W + j) = '1';}
            }
            else{
                if(*(p + i * W + (j-1)) == '#' || *(p + i * W + (j-1)) == '1'){*(p + i * W + (j-1)) = '1'; *(p + i * W + j) = '1';}
                if(*(p + i * W + (j+1)) == '#' || *(p + i * W + (j+1)) == '1'){*(p + i * W + (j+1)) = '1'; *(p + i * W + j) = '1';}
                if(*(p + (i-1) * W + j) == '#' || *(p + (i-1) * W + j) == '1'){*(p + (i-1) * W + j) = '1'; *(p + i * W + j) = '1';}
            }
        }
        else{
            if(j == 0){
                if(*(p + i * W + (j+1)) == '#' || *(p + i * W + (j+1)) == '1'){*(p + i * W + (j+1)) = '1'; *(p + i * W + j) = '1';}
                if(*(p + (i+1) * W + j) == '#' || *(p + (i+1) * W + j) == '1'){*(p + (i+1) * W + j) = '1'; *(p + i * W + j) = '1';}
                if(*(p + (i-1) * W + j) == '#' || *(p + (i-1) * W + j) == '1'){*(p + (i-1) * W + j) = '1'; *(p + i * W + j) = '1';}
            }
            else if(j == W-1){
                if(*(p + i * W + (j-1)) == '#' || *(p + i * W + (j-1)) == '1'){*(p + i * W + (j-1)) = '1'; *(p + i * W + j) = '1';}
                if(*(p + (i+1) * W + j) == '#' || *(p + (i+1) * W + j) == '1'){*(p + (i+1) * W + j) = '1'; *(p + i * W + j) = '1';}
                if(*(p + (i-1) * W + j) == '#' || *(p + (i-1) * W + j) == '1'){*(p + (i-1) * W + j) = '1'; *(p + i * W + j) = '1';}
            }
            else{
                if(*(p + i * W + (j-1)) == '#' || *(p + i * W + (j-1)) == '1'){*(p + i * W + (j-1)) = '1'; *(p + i * W + j) = '1';}
                if(*(p + i * W + (j+1)) == '#' || *(p + i * W + (j+1)) == '1'){*(p + i * W + (j+1)) = '1'; *(p + i * W + j) = '1';}
                if(*(p + (i+1) * W + j) == '#' || *(p + (i+1) * W + j) == '1'){*(p + (i+1) * W + j) = '1'; *(p + i * W + j) = '1';}
                if(*(p + (i-1) * W + j) == '#' || *(p + (i-1) * W + j) == '1'){*(p + (i-1) * W + j) = '1'; *(p + i * W + j) = '1';}
            }
        }
    }
}

int main(){
    
    int H,W; cin >> H >> W;
    char S[H][W];
    
    for(int i=0;i<H;i++){
        for(int j=0;j<W;j++){
            cin >> S[i][j];
        }
    }
  
    for(int i=0;i<H;i++){
        for(int j=0;j<W;j++){
            My_Piant(&S[0][0],i,j,H,W);
        }
    }
    
    if(Check(&S[0][0],H,W)) cout << "Yes" << endl;
    else cout << "No" << endl;
}

Measured memory_bytes: 3644