#include "stdio.h"
#include <iostream>
#include <string>
#include <vector>

using namespace std;

#define PB push_back
#define PII pair<int, int>
#define A first
#define B second

const int maxn = 1024;
const int V = 5;

int a[maxn][maxn], en[maxn][maxn];
vector<PII> list[9];
int best, r1, c1, r2, c2;

int main()
{
   freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
   int i, j, k, n, m;
   cin >> n >> m;

   for (i = 0; i < n; i++) {
      string s; cin >> s;
      for (j = 0; j < m; j++)
         a[i][j] = s[j] == '+' ? 1 : -1;
   }      

   //считаем, сколько энергии дает замена каждого узла, формируем списки 
   for (i = 0; i < n; i++)
      for (j = 0; j < m; j++) {
         for (int dx = -1; dx <= 1; dx++)
            for (int dy = -1; dy <= 1; dy++)
               if (abs(dx) + abs(dy) == 1) {
                  int x = i + dx, y = j + dy;
                  if (x >= 0 && x < n && y >= 0 && y < m) {
                     if (a[x][y] == a[i][j]) en[i][j]++; else en[i][j]--;
                  }
               }
         if (list[en[i][j]+4].size() < V) {
            list[en[i][j]+4].PB(PII(i, j));
         }
      }         
   
   best = -9;
   
   //просматриваем пары соседних узлов
   for (i = 0; i < n; i++)
      for (j = 0; j < m; j++) {
         if (i < n-1) {
            k = en[i][j] + en[i+1][j] + ((a[i][j] == a[i+1][j]) ? -2 : 2);
            if (k > best) {best = k; r1 = i; c1 = j; r2 = i+1; c2 = j;}
         }
         if (j < m-1) {
            k = en[i][j] + en[i][j+1] + ((a[i][j] == a[i][j+1]) ? -2 : 2);
            if (k > best) {best = k; r1 = i; c1 = j; r2 = i; c2 = j+1;}
         }
      }
   
   //среди пяти узлов всегда найдется хоть идин не соседний данному
   for (i = -4; i <= 4; i++)      
      for (j = 0; j < list[i+4].size(); j++)
         for (int p = -4; p <= 4; p++)
            for (int q = 0; q < list[p+4].size(); q++)
               if (p != i || q != j) {
                  PII u = list[i+4][j];
                  PII v = list[p+4][q];
                  if (abs(u.A-v.A) + abs(u.B-v.B) > 1 && i+p > best) {
                     best = i+p;
                     r1 = u.A; c1 = u.B;
                     r2 = v.A; c2 = v.B;
                  }
               }

   cout << r1+1 << " " << c1+1 << " " << r2+1 << " " << c2+1;
   
   fclose(stdin); fclose(stdout);
   return 0;
}
