#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <stdio.h>
#include <map>
#include <queue>
#include <numeric>
#include <climits>
#include <functional>
using namespace std;
#define REP(i, n) for(int i = 0;i < n;i++)
#define REPR(i, n) for(int i = n;i >= 0;i--)
#define FOR(i, m, n) for(int i = m;i < n;i++)
using ll = unsigned long long;
const ll mod = 1000000007;
string al = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//bool less_sec(const pair<int, int>&a, const pair<int, int>&b) {
//	return a.second > b.second;
//}
int H, W;
vector<string> field;
int main() {
	cin.tie(0);
	ios::sync_with_stdio(false);
    cin >> H >> W;
    for(int i=0; i<H; ++i){
        string str; getline(cin, str);
        field.push_back(str);
    }
    bool flag=true;
    for(int i=0; i<H; ++i){
        for(int j=0; j<W; ++j){
            if(field[i][j]=='#'){
                if(i==0&&j==0){
                    if(field[i+1][j]=='#'||field[i][j+1]=='#'){
                        continue;
                    }else{
                        flag = false;
                        break;
                    }
                }else if(i==0&&j==W-1){
                    if(field[i+1][j]=='#'||field[i][j-1]=='#'){
                        continue;
                    }else{
                        flag = false;
                        break;
                    }
                }else if(i==H-1&&j==0){
                    if(field[i-1][j]=='#'||field[i][j+1]=='#'){
                        continue;
                    }else{
                        flag = false;
                        break;
                    }
                }else if(i==H-1&&j==W-1){
                    if(field[i-1][j]=='#'||field[i][j-1]=='#'){
                        continue;
                    }else{
                        flag = false;
                        break;
                    }
                }
                if(i==0){
                    if(field[i+1][j]=='#'||field[i][j+1]=='#'||field[i][j-1]=='#'){
                        continue;
                    }else{
                        flag = false;
                        break;
                    }
                }else if(i==H-1){
                    if(field[i-1][j]=='#'||field[i][j+1]=='#'||field[i][j-1]=='#'){
                        continue;
                    }else{
                        flag = false;
                        break;
                    }
                }else if(j==0){
                    if(field[i+1][j]=='#'||field[i][j+1]=='#'||field[i-1][j]=='#'){
                        continue;
                    }else{
                        flag = false;
                        break;
                    }
                }else if(j==W-1){
                    if(field[i+1][j]=='#'||field[i][j-1]=='#'||field[i-1][j]=='#'){
                        continue;
                    }else{
                        flag = false;
                        break;
                    }
                }else{
                    if(field[i+1][j]=='#'||field[i][j-1]=='#'||field[i-1][j]=='#'||field[i][j+1]=='#'){
                        continue;
                    }else{
                        flag = false;
                        break;
                    }
                }
            }
        }
        if(!flag) break;
    }
    if(!flag) cout << "No" << endl;
    else cout << "Yes" << endl;
    

    return 0;
}

Measured memory_bytes: 256