#include <bits/stdc++.h>
using namespace std;
int H, W;
char s[50][50];
int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
int main() {
  bool flag = true;
  cin >> H >> W;
  for (int i = 0; i < H; i++) {
    cin >> s[i];
  }
  for (int i = 0; i < H; i++) {
    for (int j = 0; j < W; j++) {
      if (i == 0 || i == H - 1 || j == 0 || j == W - 1) {
        if (i == 0 && j == 0) {
          if (s[i][j] == '#' && (s[i + 1][j] == '.' && s[i][j + 1] == '.'))
            flag = false;
        } else if (i == 0 && j == W - 1) {
          if (s[i][j] == '#' && (s[i + 1][j] == '.' && s[i][j - 1] == '.'))
            flag = false;
        } else if (i == H - 1 && j == 0) {
          if (s[i][j] == '#' && (s[i - 1][j] == '.' && s[i][j + 1] == '.'))
            flag = false;
        } else if (i == H - 1 && j == W - 1) {
          if (s[i][j] == '#' && (s[i - 1][j] == '.' && s[i][j - 1] == '.'))
            flag = false;
        } else if (i == 0) {
          if (s[i][j] == '#' &&
              (s[i + 1][j] == '.' && s[i][j - 1] == '.' && s[i][j + 1] == '.'))
            flag = false;
        } else if (i == H - 1) {
          if (s[i][j] == '#' &&
              (s[i - 1][j] == '.' && s[i][j - 1] == '.' && s[i][j + 1] == '.'))
            flag = false;
        } else if (j == 0) {
          if (s[i][j] == '#' &&
              (s[i][j + 1] == '.' && s[i - 1][j] == '.' && s[i + 1][j] == '.'))
            flag = false;
        } else if (j == W - 1) {
          if (s[i][j] == '#' &&
              (s[i][j - 1] == '.' && s[i - 1][j] == '.' && s[i + 1][j] == '.'))
            flag = false;
        }
      } else {
        if (s[i][j] == '#' && s[i - 1][j] == '#' && s[i + 1][j] == '#' &&
            s[i][j - 1] == '#' && s[i][j + 1] == '#') {
        }
      }
    }
  }
  cout << ((flag) ? "Yes" : "No") << endl;
}
