#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void R(T &xx) {
  xx = 0;
  char ch = getchar();
  bool F = 0;
  while ((ch < '0' || ch > '9') && ch != '-') ch = getchar();
  if (ch == '-') F = 1, ch = getchar();
  while (ch >= '0' && ch <= '9')
    xx = xx + xx + (xx << 3) + ch - 48, ch = getchar();
  if (F) xx = -xx;
}
set<int> x, y;
int n, m;
char s[1011][1011], a[1011][1011];
inline bool modi(int x1, int y1, int x2, int y2) {
  for (int i = x1; i <= x2; i++) {
    if (s[i][y1] != '#' || s[i][y2] != '#') return 0;
    a[i][y1] = a[i][y2] = '#';
  }
  for (int i = y1; i <= y2; i++) {
    if (s[x1][i] != '#' || s[x2][i] != '#') return 0;
    a[x1][i] = a[x2][i] = '#';
  }
  return 1;
}
inline bool cmp() {
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++)
      if (s[i][j] ^ a[i][j]) return 0;
  return 1;
}
int main() {
  R(n), R(m);
  for (int i = 1; i <= n; i++) scanf("%s", s[i] + 1);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      if (s[i][j] == '#' && s[i][j - 1] == '#' && s[i][j + 1] == '#')
        x.insert(i);
      if (s[i][j] == '#' && s[i - 1][j] == '#' && s[i + 1][j] == '#')
        y.insert(j);
    }
  if (((int)x.size()) > 4) x.erase(++ ++x.begin(), -- --x.end());
  if (((int)y.size()) > 4) y.erase(++ ++y.begin(), -- --y.end());
  for (int l1 : x)
    for (int r1 : y)
      for (int l2 : x)
        for (int r2 : y)
          for (int l3 : x)
            for (int r3 : y)
              for (int l4 : x)
                for (int r4 : y) {
                  if (l2 - l1 < 2 || r2 - r1 < 2 || l4 - l3 < 2 || r4 - r3 < 2)
                    continue;
                  memset(a, '.', sizeof(a));
                  if (!modi(l1, r1, l2, r2) || !modi(l3, r3, l4, r4)) continue;
                  if (cmp())
                    return printf("YES\n%d %d %d %d\n%d %d %d %d\n", l1, r1, l2,
                                  r2, l3, r3, l4, r4),
                           0;
                }
  puts("NO");
  return 0;
}
