#include <bits/stdc++.h>
using namespace std;
int dx[] = {1, 0, 0, -1};
int dy[] = {0, 1, -1, 0};
vector<string> s = {};
int H, W;
void dfs(int x, int y) {
  if (x < 0 || y < 0 || x >= H || y >= W || s[x][y] == '.') {
    return;
  }
  if (s[x][y] == '#') {
    s[x][y] = '.';
  }
  for (int i = 0, i_len = (4); i < i_len; ++i) {
    dfs(x + dx[i], y + dy[i]);
  }
}
int main(int argc, char* argv[]) {
  string temp;
  cin >> H >> W;
  for (int i = 0, i_len = (H); i < i_len; ++i) {
    cin >> temp;
    s.push_back(temp);
  }
  bool found = false;
  for (int i = 0, i_len = (H); i < i_len; ++i) {
    for (int j = 0, j_len = (W); j < j_len; ++j) {
      if (s[i][j] == '#') {
        dfs(i, j);
        found = true;
      }
    }
    if (found) break;
  }
  for (int i = 0, i_len = (H); i < i_len; ++i) {
    for (int j = 0, j_len = (W); j < j_len; ++j) {
      if (s[i][j] == '#') {
        cout << "No" << endl;
        return 0;
      }
    }
  }
  cout << "Yes" << endl;
  return 0;
}
