#include <bits/stdc++.h>
using namespace std;
int a, b, c, d, e, f, g, h, i, j, k;
char w[1005][1005];
vector<pair<int, int> > GG;
pair<int, int> E1[2000005], E2[2000005];
int e1, e2;
int ALL;
char www;
bool check(pair<int, int> x, pair<int, int> xx, pair<int, int> y,
           pair<int, int> yy) {
  int ii, jj, kk;
  GG.clear();
  for (ii = x.first; ii <= xx.first; ii++) {
    GG.push_back(make_pair(ii, x.second));
    GG.push_back(make_pair(ii, xx.second));
    if (w[ii][x.second] != '#' || w[ii][xx.second] != '#') return false;
  }
  for (ii = x.second; ii <= xx.second; ii++) {
    GG.push_back(make_pair(x.first, ii));
    GG.push_back(make_pair(xx.first, ii));
    if (w[x.first][ii] != '#' || w[xx.first][ii] != '#') return false;
  }
  for (ii = y.first; ii <= yy.first; ii++) {
    GG.push_back(make_pair(ii, y.second));
    GG.push_back(make_pair(ii, yy.second));
    if (w[ii][y.second] != '#' || w[ii][yy.second] != '#') return false;
  }
  for (ii = y.second; ii <= yy.second; ii++) {
    GG.push_back(make_pair(y.first, ii));
    GG.push_back(make_pair(yy.first, ii));
    if (w[y.first][ii] != '#' || w[yy.first][ii] != '#') return false;
  }
  sort(GG.begin(), GG.end());
  GG.erase(unique(GG.begin(), GG.end()), GG.end());
  kk = GG.size();
  if (kk != ALL) return false;
  return true;
}
int main() {
  scanf("%d%d", &a, &b);
  for (i = 1; i <= a; i++) scanf("%s", w[i] + 1);
  for (i = 1; i <= a; i++)
    for (j = 1; j <= b; j++)
      if (w[i][j] == '#') ALL++;
  for (i = 1; i < a - 1; i++) {
    e = 0;
    for (j = 1; j < b - 1; j++)
      if (w[i][j] == '#' && w[i + 1][j] == '#' && w[i][j + 1] == '#' &&
          w[i][j + 2] == '#' && w[i + 2][j] == '#') {
        e++;
        if (e > 3) break;
        E1[++e1] = make_pair(i, j);
      }
  }
  for (i = a; i >= 3; i--) {
    e = 0;
    for (j = b; j >= 3; j--)
      if (w[i][j] == '#' && w[i - 1][j] == '#' && w[i][j - 1] == '#' &&
          w[i][j - 2] == '#' && w[i - 2][j] == '#') {
        e++;
        if (e > 3) break;
        E2[++e2] = make_pair(i, j);
      }
  }
  for (i = 1; i <= min(5, e1); i++)
    for (j = 1; j <= min(5, e2); j++) {
      if (check(E1[1], E2[j], E1[i], E2[1])) {
        printf("YES\n");
        printf("%d %d %d %d\n", E1[1].first, E1[1].second, E2[j].first,
               E2[j].second);
        printf("%d %d %d %d\n", E1[i].first, E1[i].second, E2[1].first,
               E2[1].second);
        return 0;
      }
      if (check(E1[1], E2[1], E1[i], E2[j])) {
        printf("YES\n");
        printf("%d %d %d %d\n", E1[1].first, E1[1].second, E2[1].first,
               E2[1].second);
        printf("%d %d %d %d\n", E1[i].first, E1[i].second, E2[j].first,
               E2[j].second);
        return 0;
      }
    }
  printf("NO\n");
  return 0;
}
