#pragma GCC optimize ("03,unroll-loops")
//#pragma GCC target ("avx,avx2,bmi,bmi2,lzcnt,popcnt")
#include <bits/stdc++.h>

using namespace std;
#define int long long
#define foru(i, x, n) for (int i = x; i < n; i++)
#define ford(i, x, n) for (int i = x; i >= n; i--)
#define forn(i, n) for (int i = 0; i < n; i++)
#define pb push_back
#define ft first
#define sd second
#define elif else if
#define fast ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);

template <typename T, typename Y>
istream& operator>> (istream& in, pair<T, Y>& a) {
    in >> a.first >> a.second;
    return in;
}

template <typename T>
istream& operator>> (istream& in, vector<T>& a) {
    forn(i, a.size())
        in >> a[i];
    return in;
}

template<typename T>
ostream& operator<< (ostream& out, vector<T>& a) {
    out << a[0];
    foru(i, 1, a.size())
        out << ' ' << a[i];
    out << '\n';
    return out;
}

const int MAX=1e9+1;
const double EPS = 1e-9;

vector <string> m;
vector <int> pal(4, 0);

void pr(int i, int j, int sz) {
    vector <int> tx = {-1, -1, -1, 0, 1, 1, 1, 0};
    vector <int> ty = {-1, 0, 1, 1, 1, 0, -1, -1};
    bool vs = false;
    for (int _i = 0; _i < tx.size(); _i++) {
        int tox = i + tx[_i], toy = j + ty[_i];
        if (tox >= 0 && tox < m.size() && toy >= 0 && toy < m[0].size()) {
            if (m[tox][toy] == '#') {
                vs = true;
                if (tx[_i] != 0 && ty[_i] != 0) {
                    cout << "NO\n"; exit(0);
                }
                sz++;
                m[tox][toy] = '.';
                pr (tox, toy, sz);
            }
        }
    }
    if (sz > 4) {cout << "NO\n"; exit(0);}
    if (!vs) pal[sz - 1]++;
}

void solve() {
    string a;
    while (getline(cin, a)) m.pb(a);
    for (int i = 0; i < m.size(); i++) {
        for (int j = 0; j < m[i].size(); j++) {
            if (m[i][j] == '#')
                pr(i, j, 1);
        }
    }
    if (pal[0] != 4 && pal[1] != 3 && pal[2] != 2 && pal[3] != 1) cout << "NO\n";
    else cout << "YES\n";
}

signed main()
{
    fast;
    int t = 1;
    //cin >> t;
    while (t--)
        solve();
    return 0;
}
