import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.stream.IntStream; /** * * @author tym11 */ public class tribune { /** * @param args the command line arguments */ public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); for(;;) { String s = in.readLine(); if (s == null) break; int n = Integer.valueOf(s); char[][] trib = new char[n][]; for (int i = 0; i < n; ++i) { trib[i] = in.readLine().toCharArray(); } solve(trib); } } private static void solve(char[][] trib) { int n = trib.length; int[] cnt = new int[26]; for (char[] a: trib) { for (char c: a) { cnt[(c - 'A')]++; } } for (int r = 0; r < n; ++r) { for (int c = 0; c < n; ++c) { char x = trib[r][c]; if (cnt[(x - 'A')] == 1) { int y = -1; for (int k = 0; k < cnt.length; ++k) { if (cnt[k] == n - 1) { y = k; break; } } System.out.println((r + 1) + " " + (c + 1) + " " + (char)(y + 'A')); return; } } } int row = -1; for (int i = 0; i < n; ++i) { int mask = 0; for (char c: trib[i]) { int b = c - 'A'; int x = 1 << b; if ((mask & x) != 0) { row = i; break; } mask |= x; } if (row != -1) break; } int col = -1; for (int i = 0; i < n; ++i) { int mask = 0; for (int j = 0; j < n; ++j) { char c = trib[j][i]; int b = c - 'A'; int x = 1 << b; if ((mask & x) != 0) { col = i; break; } mask |= x; } if (col != -1) break; } int y; for (int k = 0; k < cnt.length; ++k) { if (cnt[k] == n - 1) { y = k; System.out.println((row + 1) + " " + (col + 1) + " " + (char)(y + 'A')); break; } } } }