#include <bits/stdc++.h>
#define REP(i, n) for(ll i = 0; i < (ll)n; i++)
#define FOR(i, a, b) for(ll i = (a); i < (ll)b; i++)
#define ALL(obj) (obj).begin(), (obj).end()
#define INF 1000000000000000
using namespace std;
typedef long long ll;
typedef double db;
typedef string str;
typedef pair<ll, ll> p;
constexpr int MOD = 1000000007;
template <class T> inline bool chmin(T &a, T b) {
    if(a > b) {
        a = b;
        return true;
    }
    return false;
}
template <class T> inline bool chmax(T &a, T b) {
    if(a < b) {
        a = b;
        return true;
    }
    return false;
}

void print(const std::vector<int> &v) {
    std::for_each(v.begin(), v.end(), [](int x) { std::cout << x << " "; });
    std::cout << std::endl;
}

const int dy[4] = {-1, 0, 0, 1};
const int dx[4] = {0, -1, 1, 0};
int main() {
    int H;
    int W;
    vector<vector<char>> s(H + 1, vector<char>(W + 1));

    REP(i, H) {
        REP(j, W) { cin >> s[i][j]; }
    }
    //孤立しているマスを探す
    REP(i, H - 1) {
        i++;
        REP(j, W - 1) {
            j++;
            if(s[i][j] == '.') {
                continue;
            }
            int cnt = 0;
            REP(k, 4) {
                if(s[i+dx[k]][j+dy[k] == '#'){
                    cnt++;
                }
            }
            if(cnt == 0) {
                cout << "No" << endl;
                return 0;
            }
        }
    }
    cout << "Yes" << endl;
}