#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
long long GCD(long long a, long long b) { return b ? GCD(b, a % b) : a; }
long long LCM(long long a, long long b) { return a / GCD(a, b) * b; }
int dx[8] = {-1, 0, 1, 0};
int dy[8] = {0, -1, 0, 1};
char dir[4] = {'u', 'l', 'd', 'r'};
long long int cmp1(pair<long long int, string> a,
                   pair<long long int, string> b) {
  if (a.first != b.first)
    return a.first < b.first;
  else
    return a.second < b.second;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  int h, w;
  cin >> h >> w;
  char hw[55][55];
  for (int i = 0; i < h; i++)
    for (int j = 0; j < w; j++) cin >> hw[i][j];
  for (int i = 0; i < h; i++)
    for (int j = 0; j < w; j++) {
      int nx = i;
      int ny = j;
      if (hw[i][j] == '#')
        for (int z = 0; z < 4; z++) {
          nx += dx[i];
          ny += dy[i];
          if (nx < h && nx >= 0 && ny < w && ny >= 0) {
            if (hw[nx][ny] == '.') {
              cout << "No" << endl;
              return 0;
            }
          }
        }
    }
  cout << "Yes" << endl;
  return 0;
}
