#include <bits/stdc++.h>
int main() {
  int H, W;
  scanf("%d %d", &H, &W) + 1;
  char** grid = new char*[H + 2];
  grid[0] = new char[W + 2];
  memset(grid[0], '.', W + 2);
  for (int i = 1; i <= H; i++) {
    grid[i] = new char[W + 2];
    grid[i][0] = '.';
    scanf("%s", &grid[i][1]);
    grid[i][W + 1] = '.';
  }
  grid[H + 1] = new char[W + 2];
  memset(grid[H + 1], '.', W + 2);
  int ans = 1;
  for (int x = 1; x <= W; x++) {
    for (int y = 1; y <= H; y++) {
      if (grid[x][y] == '#' && grid[x - 1][y] == '.' && grid[x + 1][y] == '.' &&
          grid[x][y - 1] == '.' && grid[x][y + 1] == '.') {
        ans = 0;
        break;
      }
    }
  }
  if (ans)
    printf("Yes\n");
  else
    printf("No\n");
  return 0;
}
