#include <bits/stdc++.h>
using namespace std;
const int N = 50;
int grid[N + 2][N + 2];
bool vis[N + 2][N + 2];
void floodfill(int i, int j) {
  if (grid[i][j] == 0) return;
  if (vis[i][j]) return;
  vis[i][j] = true;
  for (int x = -1; x <= 1; x++) {
    for (int y = -1; y <= 1; y++) {
      if (abs(x - y) == 1) {
        floodfill(i + x, j + y);
      }
    }
  }
}
bool checkSides(int i, int j) {
  bool ans = false;
  for (int x = -1; x <= 1; x++) {
    for (int y = -1; y <= 1; y++) {
      if (abs(x - y) == 1) {
        if (grid[i + x][j + y] == 1) {
          ans = true;
          break;
        }
      }
    }
    if (ans) break;
  }
  return ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int h, w;
  cin >> h >> w;
  memset(grid, 0, sizeof(grid));
  memset(vis, false, sizeof(vis));
  for (int i = 1; i <= h; i++) {
    for (int j = 1; j <= w; j++) {
      char ch;
      cin >> ch;
      grid[i][j] = ch == '#';
    }
  }
  bool ans = true;
  for (int i = 1; i <= h; i++) {
    for (int j = 1; j <= w; j++) {
      bool temp = true;
      if (grid[i][j] == 1) temp = checkSides(i, j);
      floodfill(i, j);
      if (!temp) {
        cout << i << " " << j << " Yes" << endl;
        ans = false;
        break;
      }
    }
    if (!ans) break;
  }
  cout << ((ans) ? "Yes" : "No") << endl;
}
