#include <bits/stdc++.h>
using namespace std;
bool IsO(string s[], int i, int j) {
  if (s[i - 1][j] == '#')
    return true;
  else
    return false;
}
bool IsU(string s[], int i, int j) {
  if (s[i + 1][j] == '#')
    return true;
  else
    return false;
}
bool IsR(string s[], int i, int j) {
  if (s[i][j + 1] == '#')
    return true;
  else
    return false;
}
bool IsL(string s[], int i, int j) {
  if (s[i][j - 1] == '#')
    return true;
  else
    return false;
}
using namespace std;
int main() {
  int H, W;
  string s[50];
  bool F[50][50];
  bool flg = 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++) {
      F[i][j] = false;
    }
  }
  if (s[0][0] == '#') {
    if (!(IsU(s, 0, 0) || IsR(s, 0, 0))) {
      flg = false;
    }
  }
  if (s[H - 1][0] == '#') {
    if (!(IsO(s, H - 1, 0) || IsR(s, H - 1, 0))) {
      flg = false;
    }
  }
  if (s[0][W - 1] == '#') {
    if (!(IsU(s, 0, W - 1) || IsL(s, 0, W - 1))) {
      flg = false;
    }
  }
  if (s[H - 1][W - 1] == '#') {
    if (!(IsU(s, H - 1, W - 1) || IsL(s, H - 1, W - 1))) {
      flg = false;
    }
  }
  for (int i = 0; i < H; i++) {
    for (int j = 0; j < W; j++) {
      if (s[i][j] == '.') {
        F[i][j] = true;
      } else {
        if (i == 0) {
          if (IsU(s, i, j) || IsL(s, i, j) || IsR(s, i, j)) {
            F[i][j] = true;
          }
          if (F[i][j] == false) {
            flg = false;
            break;
          }
        } else if (i == H - 1) {
          if (IsO(s, i, j) || IsL(s, i, j) || IsR(s, i, j)) {
            F[i][j] = true;
          }
          if (F[i][j] == false) {
            flg = false;
            break;
          }
        } else if (j == 0) {
          if (IsO(s, i, j) || IsU(s, i, j) || IsR(s, i, j)) {
            F[i][j] = true;
          }
          if (F[i][j] == false) {
            flg = false;
            break;
          }
        } else if (j == W - 1) {
          if (IsO(s, i, j) || IsU(s, i, j) || IsL(s, i, j)) {
            F[i][j] = true;
          }
          if (F[i][j] == false) {
            flg = false;
            break;
          }
        } else if (IsO(s, i, j) || IsU(s, i, j) || IsL(s, i, j) ||
                   IsR(s, i, j)) {
          F[i][j] = true;
          if (F[i][j] == false) {
            flg = false;
            break;
          }
        }
      }
    }
  }
  if (flg) {
    cout << "Yes" << endl;
  } else {
    cout << "No" << endl;
  }
}
