#include <bits/stdc++.h>
using namespace std;
const long double EPS = 1e-9;
const long long mod = 1e9 + 7;
const long long INF = 1e9;
const long long MAX_N = 50;
bool is_problem(string s[MAX_N], long long i, long long j, long long H,
                long long W) {
  if (s[i][j] == '.') return false;
  if (i == 0 && j == 0)
    if (s[i + 1][j] == '#' || s[i][j + 1] == '#')
      return false;
    else if (i == 0 && j == W - 1)
      if (s[i + 1][j] == '#' || s[i][j - 1] == '#')
        return false;
      else if (i == H - 1 && j == 0)
        if (s[i - 1][j] == '#' || s[i][j + 1] == '#')
          return false;
        else if (i == H - 1 && j == W - 1)
          if (s[i - 1][j] == '#' || s[i][j - 1] == '#')
            return false;
          else if (i == 0)
            if (s[i + 1][j] == '#' || s[i][j - 1] == '#' || s[i][j + 1] == '#')
              return false;
            else if (i == H - 1)
              if (s[i - 1][j] == '#' || s[i][j - 1] == '#' ||
                  s[i][j + 1] == '#')
                return false;
              else if (j == 0)
                if (s[i - 1][j] == '#' || s[i + 1][j] == '#' ||
                    s[i][j + 1] == '#')
                  return false;
                else if (j == W - 1)
                  if (s[i - 1][j] == '#' || s[i + 1][j] == '#' ||
                      s[i][j - 1] == '#')
                    return false;
                  else if (s[i - 1][j] == '#' || s[i + 1][j] == '#' ||
                           s[i][j - 1] == '#' || s[i][j + 1] == '#')
                    return false;
  return true;
}
int main(void) {
  long long H, W;
  string s[MAX_N];
  long long answer;
  cin >> H >> W;
  for (long long i = 0; i < H; i++) cin >> s[i];
  for (long long h = 0; h < H; h++)
    for (long long w = 0; w < W; w++)
      if (is_problem(s, h, w, H, W)) {
        cout << "No" << endl;
        return 0;
      }
  cout << "Yes" << endl;
  return 0;
}
