#include <bits/stdc++.h>
using namespace std;
const long long INF = (1LL << 32);
const long long MOD = 1000000007;
const long double PI = 3.1415926;
template <class T>
T &chmin(T &a, const T &b) {
  return a = min(a, b);
}
template <class T>
T &chmax(T &a, const T &b) {
  return a = max(a, b);
}
long long int n, m, k, ans = 0, sum = 0, cnt = 0;
string s;
char d[60][60];
long long int dx[4] = {-1, 0, 1, 0};
long long int dy[4] = {0, 1, 0, -1};
long long int sx, sy;
long long int gx, gy;
int main() {
  cin >> n >> m;
  for (long long int i = (long long int)(0); i < (long long int)(n); i++) {
    for (long long int j = (long long int)(0); j < (long long int)(m); j++) {
      cin >> d[i][j];
    }
  }
  for (long long int i = (long long int)(0); i < (long long int)(n); i++) {
    for (long long int j = (long long int)(0); j < (long long int)(m); j++) {
      if (d[i][j] == '#') {
        bool f = false;
        for (long long int t = (long long int)(0); t < (long long int)(4);
             t++) {
          long long int nx = i + dx[t];
          long long int ny = j + dy[t];
          if (0 <= nx && nx < m && 0 <= ny && ny < n) {
            if (d[nx][ny] == '#') {
              f = true;
              break;
            }
          }
        }
        if (!f) {
          cout << "No" << endl;
          return 0;
        }
      }
    }
  }
  cout << "Yes" << endl;
}
