#include <bits/stdc++.h>
void read_from_cin() {}
template <typename T, typename... Ts>
void read_from_cin(T& value, Ts&... args) {
  std::cin >> value;
  read_from_cin(args...);
}
template <typename T>
void write_to_cout(const T& value) {
  std::cout << value << '\n';
}
template <typename T, typename... Ts>
void write_to_cout(const T& value, const Ts&... args) {
  std::cout << value << ' ';
  write_to_cout(args...);
}
using ll = long long;
template <typename T>
using V = std::vector<T>;
template <typename T>
using VV = V<V<T>>;
using namespace std;
int dr[] = {1, -1, 0, 0};
int dc[] = {0, 0, 1, -1};
int main() {
  int h, w;
  read_from_cin(h, w);
  ;
  V<string> s(w);
  for (int r = 0; r < (int)(h); ++r) cin >> s[r];
  VV<bool> b(h + 2, V<bool>(w + 2));
  for (int r = 0; r < (int)(h); ++r)
    for (int c = 0; c < (int)(w); ++c) b[r + 1][c + 1] = s[r][c] == '#';
  for (int r = 0; r < (int)(h); ++r)
    for (int c = 0; c < (int)(w); ++c)
      if (b[r + 1][c + 1]) {
        bool ok = false;
        for (int i = 0; i < (int)(4); ++i)
          if (b[r + 1 + dr[i]][c + 1 + dc[i]]) ok = true;
        if (!ok) {
          write_to_cout("No");
          ;
          return 0;
        }
      }
  write_to_cout("Yes");
  ;
}
