#include #include #include #include using namespace std; typedef long long ll; void findWrong(char* row, int n, int & j, char wrong) { for ( int i = 0 ; i < n; i++ ) { if ( row[i] == wrong ) { j = i; return; } } } char getChar(ll n) { for ( int i = 0; n != 0; n >>= 1, i++) { if ( n & 1 ) return i+65; } return -1; } void read_matrix(char **matrix, int number){ map > m; for (int i = 0; i < number ; ++i){ ll num = 0; for (int j = 0; j < number ; ++j){ char c; cin >> c; matrix[i][j] = c; num |= 1 << (c-65); } m[num].insert(i); } ll both = 0, wrong = 0, right = 0; for(map >::iterator it=m.begin(); it!=m.end(); it++) { both ^= it->first; if ( it->second.size() == 1 ) { wrong = it->first; } else { right = it->first; } } char w = getChar(both&wrong), r = getChar(both&right); int row = *(m[wrong].begin()), col = 0; findWrong(matrix[row], number, col, w); cout << row+1 << " " << col+1 << " " << r << endl; } int main(int argc, char** argv) { int number; while (cin >> number){ char **matrix = new char*[number]; for (int i = 0; i < number; ++i) matrix[i] = new char[number]; read_matrix(matrix, number); for ( int i = 0 ; i < number; i++ ) { delete[] matrix[i]; } delete[] matrix; } return 0; }