#include <bits/stdc++.h>
using namespace std;
struct Fast {
  Fast() {
    cin.tie(0);
    ios::sync_with_stdio(false);
    cout << fixed << setprecision(20);
  }
} fast;
long long mod = 1000000007;
long long div(long long a, long long b, long long c) {
  return b / c - (a - 1) / c;
}
void print_binary(long long a) {
  for (int i = 31; i >= 0; i--) {
    cout << (a >> i & 1);
  }
  cout << endl;
}
long long modpow(long long m, long long n) {
  if (n == 0) return 1;
  if (n % 2 == 0) {
    long long t = modpow(m, n / 2);
    return t * t;
  } else {
    return modpow(m, n - 1) * m;
  }
}
void yes() {
  cout << "Yes" << endl;
  exit(0);
}
void no() {
  cout << "No" << endl;
  exit(0);
}
int main() {
  long long r, d, ans = 0, n, m, sum = 0;
  string t;
  cin >> n >> m;
  vector<vector<char>> as(n, vector<char>(m));
  vector<vector<char>> bs(n, vector<char>(m));
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      cin >> as[i][j];
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      bs[i][j] = '.';
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if (as[i][j] = '#') {
        r = 0;
        if (j != n - 1) {
          if (as[i][j + 1] = '#') {
            bs[i][j] = '#';
            bs[i][j + 1] = '#';
            r++;
          }
        }
        if (i != n - 1) {
          if (as[i + 1][j] = '#' && i != n - 1) {
            bs[i][j] = '#';
            bs[i][j] = '#';
            r++;
          }
        }
        if (r == 0 && i != n - 1 && j != n - 1) {
          cout << "No" << endl;
        }
      }
    }
  }
  cout << "Yes" << endl;
}
