import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.HashMap; import java.util.Map.Entry; public class prva { public static void main(String[] args) throws IOException { //System.setIn(new FileInputStream(new File("test.txt"))); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String riadok; while ((riadok = br.readLine()) != null) { HashMap map = new HashMap<>(); int n = Integer.parseInt(riadok); char[][] pole = new char[n][n]; for (int i = 0; i < n; i++) { riadok = br.readLine(); for (int p = 0; p < n; p++) { char c = riadok.charAt(p); pole[i][p] = c; if (!map.containsKey(c)) map.put(c, 0); map.put(c, map.get(c) + 1); } } char soloChar = ' '; char tooManyChar = ' '; char povodny = ' '; for (Entry entry : map.entrySet()) { if (entry.getValue() == 1) { soloChar = entry.getKey(); } if (entry.getValue() == n + 1) { tooManyChar = entry.getKey(); } if (entry.getValue() == n - 1) { povodny = entry.getKey(); } } if (soloChar != ' ') { int r = 0; int s = 0; Loop: for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (pole[i][j] == soloChar) { r = i; s = j; break Loop; } } } System.out.println((r + 1) + " " + (s + 1) + " " + povodny); } else { int r = 0; int s = 0; Loop: for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (pole[i][j] == tooManyChar) { boolean vRiadku = false; for (int k = 0; k < n; k++) { if (j != k && pole[i][k] == tooManyChar) { vRiadku = true; break; } } if (!vRiadku) continue; boolean vStlpci = false; for (int k = 0; k < n; k++) { if (i != k && pole[k][j] == tooManyChar) { vStlpci = true; break; } } if (vStlpci) { r = i; s = j; break Loop; } } } } System.out.println((r + 1) + " " + (s + 1) + " " + povodny); } } } }