#include <bits/stdc++.h>
using namespace std;

int main()
{
	int h, w, dd[] = {0, 1, 0, -1, 0};
	cin >> h >> w;
	vector<string> s(h);
	for (auto &i : s)
	{
		cin >> i;
	}
	stack<pair<int, int>> st;
	for (int i = 0; i < h; i++)
	{
		for (int j = 0; j < w; j++)
		{
			if (s[i][j] == '#')
			{
				st.push({i, j});
			}
		}
	}
	if (st.empty())
	{
		cout << "Yes" << endl;
		return 0;
	}
	int puni = 0;
	bool done[h][w]{};
	while (!st.empty())
	{
		int i = st.top().first;
		int j = st.top().second;
		st.pop();
		if (done[i][j])
		{
			continue;
		}
		done[i][j] = true;
		if (s[i][j] != '#')
		{
			continue;
		}
		int count = 0;
		for (int k = 0; k < 4; k++)
		{
			int ni = i + dd[k], nj = j + dd[k + 1];
			if ((0 <= ni && ni < h && 0 <= nj && nj < w) && s[ni][nj] == '#')
			{
				count++;
				st.push({ni, nj});
			}
		}
		if (2 <= count)
		{
			puni++;
		}
	}
	bool f = true;
	for (int i = 0; i < h; i++)
	{
		for (int j = 0; j < w; j++)
		{
			f &= s[i][j] == '#' ? done[i][j] : true;
		}
	}
	cout << (f && puni ? "Yes" : "No") << endl;
	return 0;
}