#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
const long long LINF = 1e18;
const long long MOD = 1e9 + 7;
int ctoi(char c) {
  if (c >= '0' && c <= '9') {
    return c - '0';
  }
  return 0;
}
char upper(char c) { return c - 0x20; }
char lower(char c) { return c + 0x20; }
int gcd(int x, int y) {
  if (y == 0) return x;
  return gcd(y, x % y);
}
vector<vector<int> > v;
int x[4] = {1, 0, -1, 0}, y[4] = {0, 1, 0, -1};
int h, w;
void bfs(int a, int b) {
  if (v[a][b] == 1) {
    for (int i = 0; i < (4); ++i) {
      if (0 <= a + x[i] && a + x[i] <= w - 1 && 0 <= b + y[i] &&
          b + y[i] <= h - 1) {
        if (v[a + x[i]][b + y[i]] >= 0) v[a][b] = 0;
        if (v[a + x[i]][b + y[i]] == 1) bfs(a + x[i], b + y[i]);
      }
    }
  }
}
int main() {
  cin >> h >> w;
  for (int i = 0; i < (h); ++i) {
    string s;
    cin >> s;
    vector<int> a(w);
    for (int j = 0; j < (w); ++j) {
      if (s[j] == '#') {
        a[j] = 1;
      } else {
        a[j] = -1;
      }
    }
    v.push_back(a);
  }
  for (int i = 0; i < (h); ++i)
    for (int j = 0; j < (w); ++j) {
      bfs(i, j);
    }
  for (int i = 0; i < (h); ++i)
    for (int j = 0; j < (w); ++j) {
      if (v[i][j] == 1) {
        cout << "No" << endl;
        return 0;
      }
    }
  cout << "Yes" << endl;
}
