#include <bits/stdc++.h>
using namespace std;
using ll = long long;
constexpr int INF = 1 << 29;
constexpr int H = 51;
constexpr int W = 51;
struct P {
  int x;
  int y;
};
char m[H][W];
int v[H][W]{0};
P d[4]{P{0, 1}, P{1, 0}, P{0, -1}, P{-1, 0}};
int h, w;
bool within(int x, int y) { return 0 <= x && x < w && 0 <= y && y < h; }
int bfs(int x, int y) {
  queue<P> q;
  P u;
  int sum = 0;
  q.push(P{x, y});
  while (!q.empty()) {
    u = q.front();
    q.pop();
    v[u.y][u.x] = 1;
    sum++;
    for (P i : d) {
      int x = u.x + i.x, y = u.y + i.y;
      if (within(x, y) && !v[y][x] && m[y][x] == '#') {
        q.push(P{x, y});
      }
    }
  }
  return sum;
}
int main() {
  cin >> h >> w;
  for (int i = 0; i < h; i++) {
    scanf("%s", m[i]);
  }
  for (int i = 0; i < h; i++) {
    for (int j = 0; j < w; j++) {
      if (!v[i][j] && m[i][j] == '#') {
        int num = bfs(j, i);
        if (num < 2) {
          cout << "No" << endl;
          return 0;
        }
      }
    }
  }
  cout << "Yes" << endl;
  return 0;
}
