import java.util.Scanner;
import java.util.ArrayList;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
char[][] points = new char[n][n];
// 遍历所有点
for (int i = 0; i < n; i++)
{
String s = in.next();
for (int j = 0; j < n; j++)
points[i][j] = s.charAt(j);
}
int maxArea = -1;
int x1 = 0, y1 = 0;
int x2 = 0, y2 = 0;
int x3 = 0, y3 = 0;
int x4 = 0, y4 = 0;
for (int x = 0; x < n; x++)
{
for (int y = 0; y < n; y++)
{
if (points[x][y] != '#') continue; // 寻找正方形的最左上的顶点
for (int dx = 1; dx < n; dx++) // 往右找顶点
{
for (int dy = 0; dy < n; dy++) // 往下找顶点
{
int area = dx * dx + dy * dy; //计算当前正方形的面积
if (area < maxArea) continue; // 面积小则不往下执行
// 利用左上方的顶点和向右向下的偏移量,计算剩下三个顶点的坐标
int x_2 = x + dx, y_2 = y + dy;
int x_3 = x + dx - dy, y_3 = y + dy + dx;
int x_4 = x - dy, y_4 = y + dx;
// 如果有顶点越界,则不符合条件,舍去
if (x_2 >= n || y_2 >= n || x_2 < 0 || y_2 < 0 ||
x_3 >= n || y_3 >= n || x_3 < 0 || y_3 < 0 ||
x_4 >= n || y_4 >= n || x_4 < 0 || y_4 < 0) continue;
// 如果顶点没越界,且三个顶点都是有效的(即为#)
if (points[x_2][y_2] == '#' &&
points[x_3][y_3] == '#' &&
points[x_4][y_4] == '#')
{
maxArea = area; // 最大面积换成当前更大的面积
// 更新四个顶点的坐标
x1 = x + 1; y1 = y + 1;
x2 = x_2 + 1; y2 = y_2 + 1;
x3 = x_3 + 1; y3 = y_3 + 1;
x4 = x_4 + 1; y4 = y_4 + 1;
}
}
}
}
}
System.out.println(x1 + " " + y1);
System.out.println(x2 + " " + y2);
System.out.println(x4 + " " + y4);
System.out.println(x3 + " " + y3);
}
}