#include <iostream>
#define fo(i,a,b) for(int i=a; i<=b; ++i)
using namespace std;

const int N = 55;

const int x[] = {-1, 1, 0, 0};
const int y[] = {0, 0, -1, 1};
bool judge(int, int);
char grid[N][N];

int main(){
	int H, W; cin >> H >> W;
	int f=1;
	fo(i,0,H-1) fo(j,0,W-1) cin >> grid[i][j];
	fo(i,0,H-1) fo(j,0,W-1)
		if (!judge(i, j)){ 
			cout << "No\n";
			f=0;
			break;
		}
	if (f) cout << "Yes\n";
	return 0;
}

bool judge(int i, int j){
	for(k,0,3){
		if (i+x[k]>=0 && i+x[k]<H && j+y[k]>=0 && j+y[k]<W)
			if (grid[i+x[k]][j+y[k]] == '#') return true;
	}
	return false;
}