#include #include #include #include using namespace std; int main() { int n; while (cin >> n) { vector lines; for (int i = 0; i < n; i++) { string line; cin >> line; lines.push_back(line); } vector addedVector; map charsCountMap; vector chars; for (int i = 0; i < lines.size(); i++) { string currentLine = lines[i]; int added = 0; for (int j = 0; j < currentLine.length(); j++) { map::iterator it = charsCountMap.find(currentLine[j]); if (it != charsCountMap.end()) { charsCountMap[currentLine[j]]++; } else { charsCountMap.insert(pair(currentLine[j], 1)); chars.push_back(currentLine[j]); added++; } } addedVector.push_back(added); } int maxValid = n; char lessThanMax; char exactlyOne = '/'; char moreThanMax; for (int i = 0; i < chars.size(); i++) { if (charsCountMap[chars[i]] == 1) exactlyOne = chars[i]; if (charsCountMap[chars[i]] == maxValid - 1) lessThanMax = chars[i]; if (charsCountMap[chars[i]] == maxValid + 1) { moreThanMax = chars[i]; } } if (exactlyOne != '/') { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (lines[i][j] == exactlyOne) { cout << i + 1 << " " << j + 1 << " " << lessThanMax << endl; } } } } else { int duplicateJ1, duplicateJ2; int wrongLine = - 1; for (int i = 0; i < n && wrongLine == -1; i++) { int countOfDuplicateChar = 0; for (int j = 0; j < n && wrongLine == -1; j++) { if (lines[i][j] == moreThanMax) { countOfDuplicateChar++; if (countOfDuplicateChar == 1) duplicateJ1 = j; else { wrongLine = i; duplicateJ2 = j; } } } } if (wrongLine != -1) { int count = 0; for (int i = 0; i < n; i++) { if (lines[i][duplicateJ1] == moreThanMax) { count++; } } if (count == 2) { cout << wrongLine + 1 << " " << duplicateJ1 + 1 << " " << lessThanMax << endl; } else { cout << wrongLine + 1 << " " << duplicateJ2 + 1 << " " << lessThanMax << endl; } } } } return 0; }