#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
const int M = 1000000007;
const int lim = 20;
int n, m, co, co2, ok;
char a[N][N], b[N][N], mk[N][N], mk2[N][N];
vector<pair<int, int> > c1, c2;
void g1(int x, int y) {
  if (b[x][y] == '.') {
    b[x][y] = '#';
    ++co;
  }
  if (b[x][y] != a[x][y]) ok = 0;
}
void g2(int x, int y) {
  if (b[x][y] == '#') b[x][y] = '.';
}
int main() {
  ios::sync_with_stdio(0);
  cin >> n >> m;
  for (int i = 1; i <= n; ++i) cin >> (a[i] + 1);
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j) b[i][j] = '.';
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j) co2 += int(a[i][j] == '#');
  for (int i = 1; i < n; ++i)
    for (int j = 1; j < m; ++j)
      if (a[i][j] == '#' && a[i + 1][j] == '#' && a[i][j + 1] == '#')
        mk[i][j] = mk2[i][j] = 1;
  for (int i = 2; i <= n; ++i)
    for (int j = 1; j <= m; ++j)
      if (mk[i - 1][j] && mk[i - 2][j] && mk[i + 1][j]) mk2[i][j] = 0;
  for (int i = 1; i <= n; ++i)
    for (int j = 2; j <= m; ++j)
      if (mk[i][j - 1] && mk[i][j - 2] && mk[i][j + 1]) mk2[i][j] = 0;
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j)
      if (mk2[i][j]) c1.push_back(make_pair(i, j));
  memset(mk, 0, sizeof(mk));
  memset(mk2, 0, sizeof(mk2));
  for (int i = 2; i <= n; ++i)
    for (int j = 2; j <= m; ++j)
      if (a[i][j] == '#' && a[i - 1][j] == '#' && a[i][j - 1] == '#')
        mk[i][j] = mk2[i][j] = 1;
  for (int i = 1; i < n; ++i)
    for (int j = 1; j <= m; ++j)
      if (mk[i - 1][j] && mk[i + 2][j] && mk[i + 1][j]) mk2[i][j] = 0;
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j < m; ++j)
      if (mk[i][j - 1] && mk[i][j + 2] && mk[i][j + 1]) mk2[i][j] = 0;
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j)
      if (mk2[i][j]) c2.push_back(make_pair(i, j));
  if (c1.size() + c2.size() > lim) {
    cout << "NO\n";
    return 0;
  }
  for (int i = 0; i < int(c1.size()); ++i)
    for (int j = 0; j < int(c2.size()); ++j)
      for (int i2 = 0; i2 < int(c1.size()); ++i2)
        for (int j2 = 0; j2 < int(c2.size()); ++j2) {
          int xa = c1[i].first, ya = c1[i].second;
          int xb = c2[j].first, yb = c2[j].second;
          int xc = c1[i2].first, yc = c1[i2].second;
          int xd = c2[j2].first, yd = c2[j2].second;
          if (xa >= xb || ya >= yb) continue;
          if (xc >= xd || yc >= yd) continue;
          if (xb - xa < 2 || xd - xc < 2) continue;
          if (yb - ya < 2 || yd - yc < 2) continue;
          co = 0;
          ok = 1;
          for (int x = xa, y = ya; x <= xb; ++x) g1(x, y);
          for (int x = xa, y = yb; x <= xb; ++x) g1(x, y);
          for (int x = xc, y = yc; x <= xd; ++x) g1(x, y);
          for (int x = xc, y = yd; x <= xd; ++x) g1(x, y);
          for (int y = ya, x = xa; y <= yb; ++y) g1(x, y);
          for (int y = ya, x = xb; y <= yb; ++y) g1(x, y);
          for (int y = yc, x = xc; y <= yd; ++y) g1(x, y);
          for (int y = yc, x = xd; y <= yd; ++y) g1(x, y);
          if (co == co2 && ok == 1) {
            cout << "YES\n";
            cout << xa << ' ' << ya << ' ' << xb << ' ' << yb << '\n';
            cout << xc << ' ' << yc << ' ' << xd << ' ' << yd << '\n';
            return 0;
          }
          for (int x = xa, y = ya; x <= xb; ++x) g2(x, y);
          for (int x = xa, y = yb; x <= xb; ++x) g2(x, y);
          for (int x = xc, y = yc; x <= xd; ++x) g2(x, y);
          for (int x = xc, y = yd; x <= xd; ++x) g2(x, y);
          for (int y = ya, x = xa; y <= yb; ++y) g2(x, y);
          for (int y = ya, x = xb; y <= yb; ++y) g2(x, y);
          for (int y = yc, x = xc; y <= yd; ++y) g2(x, y);
          for (int y = yc, x = xd; y <= yd; ++y) g2(x, y);
        }
  cout << "NO\n";
}
