#include <bits/stdc++.h>
using namespace std;
int main() {
  int h, w;
  cin >> h >> w;
  vector<string> grid(h);
  for (int i = 0; i < h; i++) {
    cin >> grid[i];
  }
  bool ans = true;
  for (int i = 0; i < h; i++) {
    for (int j = 0; j < w; j++) {
      if (i == j && j == 0 && grid[i][j] == '#' &&
          (grid[i][j + 1] != '#' && grid[i + 1][j] != '#'))
        ans = false;
      if (i == 0 && j != 0 && j != w - 1 && grid[i][j] == '#' &&
          grid[i][j - 1] != '#' && grid[i][j + 1] == '#' &&
          grid[i + 1][j] == '#')
        ans = false;
      if (i == 0 && j == w - 1 && grid[i][j] == '#' && grid[i][j - 1] != '#' &&
          grid[i + 1][j] != '#')
        ans = false;
      if (i != 0 && i != h - 1 && j == 0 && grid[i][j] == '#' &&
          grid[i][j + 1] != '#' && grid[i - 1][j] != '#' &&
          grid[i + 1][j] != '#')
        ans = false;
      if (i != 0 && i != h - 1 && j != 0 && j != w - 1 && grid[i][j] == '#' &&
          grid[i][j + 1] != '#' && grid[i][j - 1] != '#' &&
          grid[i - 1][j] != '#' && grid[i + 1][j] != '#')
        ans = false;
      if (i != 0 && i != h - 1 && j == w - 1 && grid[i][j] == '#' &&
          grid[i][j - 1] != '#' && grid[i + 1][j] != '#' &&
          grid[i - 1][j] != '#')
        ans = false;
      if (i == h - 1 && j == 0 && grid[i][j] == '#' && grid[i][j + 1] != '#' &&
          grid[i - 1][j] != '#')
        ans = false;
      if (i == h - 1 && j != 0 && j != w - 1 && grid[i][j] == '#' &&
          grid[i][j - 1] != '#' && grid[i][j + 1] != '#' &&
          grid[i - 1][j] != '#')
        ans = false;
      if (i == h - 1 && j == w - 1 && grid[i][j] == '#' &&
          grid[i][j - 1] != '#' && grid[i - 1][j] != '#')
        ans = false;
    }
  }
  cout << (ans ? "Yes" : "No") << "\n";
}
