/*这道题需要懂得这样一点,就是正方形已知三点就可以通过横纵坐标差值求出第四点
	因此我们对于每个为井号的点,从这个点出发开始往右下进行遍历,
	通过手动构造的点的横纵坐标差值,构造出剩余两个点的坐标,
	注意检查是否越界,然后看构造出的点是不是井号就行了
	实时更新最大值与最大值对应的四个点坐标
*/
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

void solve()
{
    int n;cin>>n;
    vector<string>v;
    for (int i = 0;i < n;i++)
    {
        string s;cin>>s;
        v.push_back(s);
    }

    // 由于井号比较少,并且最大的正方形就是本身,所以我们可以直接开始遍历
    vector<vector<int>>res(4,vector<int>(2));
    int m_s = 0;
    auto check = [&](int i,int j){
        // 只要dx+dy相等就都可以是正方形
        // 检查其中3个就行了
        for (int k = i;k < 100;k ++)
        {
            if (k > n-1)    break;
            for (int l = j;l < 100;l++)
            {
                if (v[k][l] != '#') continue;
                if (l > n-1)  break;

                // 表示四个角的坐标
                
                int dx = k-i,dy = l-j;
                // 先检查是否越界,在检查是否为井号
                int p3x = k+dy,p3y = l-dx;
                int p4x = p3x-dx,p4y = p3y-dy;
                if (p3x > n-1||p3y < 0||p3y >n-1||p3x < 0) continue;
                if (p4x < 0||p4y > n-1||p4x >n-1||p4y <0)continue;
                if (v[p3x][p3y] == '#'&&v[p4x][p4y] == '#')
                {
                    if (dx*dx+ dy*dy > m_s)
                    {
                        res[0] = {i+1,1+j};
                        res[1] = {k+1,l+1};
                        res[2] = {p3x+1,1+p3y};
                        res[3] = {p4x+1,p4y+1};
                        m_s = dx*dx+dy*dy;
                    }
                } 
            }
        }
    };

    for (int i = 0;i < n;i++)
    {
        for (int j = 0;j < n;j++)
        {
            if (v[i][j] == '#')
                check(i,j);
        }
    }

    for(auto vv:res)
    {
        for (int m:vv)
        {
            cout<<m<<' ';
        }
        cout<<'\n';
    }
}
int main() {
    ios::sync_with_stdio(false);cin.tie(nullptr);solve();return 0;
}

// 今晚可以10公里了吧要不现在就去怎么样,然后晚sang睡个好觉