#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll H, W;
char field[60][60];
ll dfs(ll y, ll x, ll c) {
  field[y][x] = '.';
  c++;
  for (int dx = -1; dx <= 1; dx += 2) {
    ll nx = x + dx, ny = y;
    if (0 <= nx && nx < W && 0 <= ny && ny < H && field[ny][nx] == '#')
      c += dfs(ny, nx, c);
  }
  for (int dy = -1; dy <= 1; dy += 2) {
    ll nx = x, ny = y + dy;
    if (0 <= nx && nx < W && 0 <= ny && ny < H && field[ny][nx] == '#')
      c += dfs(ny, nx, c);
  }
  return c;
}
int main() {
  cin >> H >> W;
  for (int i = 0; i < H; i++)
    for (int j = 0; j < W; j++) cin >> field[i][j];
  for (int i = 0; i < H; i++)
    for (int j = 0; j < W; j++)
      if (field[i][j] == '#')
        if (1 == dfs(j, i, 0)) {
          cout << "No"
               << "\n";
          return 0;
        }
  cout << "Yes"
       << "\n";
  return 0;
}
