#include <bits/stdc++.h>
using namespace std;
const int MAX = 1e3 + 9;
int n, m;
bool a[MAX][MAX], b[MAX][MAX];
char ch;
set<int> v, h, vv, hh;
bool f(int u, int l, int d, int r, int b) {
  if (b) {
    for (int i = l; i <= r; i++) a[u][i] = a[d][i] = 0;
    for (int i = u; i <= d; i++) a[i][l] = a[i][r] = 0;
  } else {
    for (int i = l; i <= r; i++)
      if (!a[u][i] || !a[d][i]) return 0;
    for (int i = u; i <= d; i++)
      if (!a[i][l] || !a[i][r]) return 0;
  }
  return 1;
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> m;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) cin >> ch, a[i][j] = (ch == '#');
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      if (a[i][j] && a[i][j - 1] && a[i][j + 1]) v.insert(i);
      if (a[i][j] && a[i - 1][j] && a[i + 1][j]) h.insert(j);
    }
  while (v.size() > 4) {
    vv.insert(*v.begin());
    v.erase(*v.begin());
    vv.insert(*v.begin());
    v.erase(*v.begin());
    vv.insert(*v.rbegin());
    v.erase(*v.rbegin());
    vv.insert(*v.rbegin());
    v.erase(*v.rbegin());
    v.swap(vv);
  }
  while (h.size() > 4) {
    hh.insert(*h.begin());
    h.erase(*h.begin());
    hh.insert(*h.begin());
    h.erase(*h.begin());
    hh.insert(*h.rbegin());
    h.erase(*h.rbegin());
    hh.insert(*h.rbegin());
    h.erase(*h.rbegin());
    h.swap(hh);
  }
  for (auto vu : v)
    for (auto vd : v)
      for (auto Vu : v)
        for (auto Vd : v)
          for (auto hl : h)
            for (auto hr : h)
              for (auto Hl : h)
                for (auto Hr : h)
                  if (vd - vu > 1 && hr - hl > 1 && Hr - Hl > 1 &&
                      Vd - Vu > 1) {
                    for (int i = 1; i <= n; i++)
                      for (int j = 1; j <= m; j++) b[i][j] = a[i][j];
                    if (f(vu, hl, vd, hr, 0) && f(Vu, Hl, Vd, Hr, 0)) {
                      f(vu, hl, vd, hr, 1), f(Vu, Hl, Vd, Hr, 1);
                      bool k = 0;
                      for (int i = 1; i <= n; i++)
                        for (int j = 1; j <= m; j++) k |= a[i][j];
                      if (!k)
                        return cout << "YES\n"
                                    << vu << " " << hl << " " << vd << " " << hr
                                    << endl
                                    << Vu << " " << Hl << " " << Vd << " "
                                    << Hr,
                               0;
                    }
                    for (int i = 1; i <= n; i++)
                      for (int j = 1; j <= m; j++) a[i][j] = b[i][j];
                  }
  cout << "NO";
  return 0;
}
