#include <bits/stdc++.h>
using namespace std;
int H, W;
int x[4] = {0, 1, 0, -1};
int y[4] = {1, 0, -1, 0};
string F[50];
bool f = false;
void bfs(int a, int b) {
  queue<pair<int, int> > Q;
  Q.push(pair<int, int>(a, b));
  int count = 0;
  while (!Q.empty()) {
    count++;
    pair<int, int> pa = Q.front();
    Q.pop();
    F[pa.second][pa.first] = '.';
    for (int i = 0; i < 4; i++) {
      int nx, ny;
      nx = x[i] + pa.first;
      ny = y[i] + pa.second;
      if (nx >= 0 && nx <= W && ny >= 0 && ny <= H && F[ny][nx] == '#') {
        Q.push(pair<int, int>(nx, ny));
      }
    }
  }
  if (count == 1) f = true;
}
void pritn() {
  for (int i = 0; i < H; i++) {
    for (int j = 0; j < W; j++) {
      cout << F[i][j];
    }
    cout << "\n";
  }
}
int main() {
  cin >> H >> W;
  for (int i = 0; i < H; i++) {
    cin >> F[i];
  }
  for (int i = 0; i < H; i++) {
    for (int j = 0; j < W; j++) {
      if (F[i][j] == '#') {
        bfs(j, i);
      }
    }
  }
  if (!f) {
    cout << "Yes"
         << "\n";
  } else {
    cout << "No"
         << "\n";
  }
}
