#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int INF = (int)1e7;
using p = pair<string, int>;
int h, w;
auto s = vector<vector<char> >();
auto dx = vector<int>({-1, 0, 1, 0});
auto dy = vector<int>({0, 1, 0, -1});
int dfs(int x, int y) {
  if (s[x][y] == '#') {
    s[x][y] = '.';
  } else {
    return 0;
  }
  auto ans = 0;
  for (int i = 0; i < 4; i++) {
    auto nx = dx[i] + x;
    auto ny = dy[i] + y;
    if (0 <= nx && nx < w && 0 <= ny && ny < h && s[nx][ny] == '#') {
      ans += dfs(nx, ny) + 1;
    }
  }
  return ans;
}
int main() {
  cin >> h >> w;
  s = vector<vector<char> >(h, vector<char>(w, '.'));
  auto check = 0;
  for (int i = 0; i < h; i++) {
    for (int j = 0; j < w; j++) {
      char t;
      cin >> t;
      if (t == '#') check++;
      s[i][j] = t;
    }
  }
  auto ans = 0;
  for (int i = 0; i < h; i++) {
    for (int j = 0; j < w; j++) {
      auto c = dfs(i, j);
      if (c != 0) ans += c + 1;
    }
  }
  if (ans == check) {
    cout << "Yes";
  } else {
    cout << "No";
  }
}
