package com.javarush.task.task22.task2207;
import org.w3c.dom.ls.LSOutput;
import java.io.*;
import java.util.*;
/*
Обращенные слова
1. Метод main должен считывать имя файла с клавиатуры.
2. В методе main должен быть использован StringBuilder.
3. В классе Solution должен содержаться вложенный класс Pair с методами equals, hashCode и toString. Удалять или изменять эти методы нельзя.
4. В классе Pair должен быть объявлен конструктор без параметров (или конструктор по умолчанию).
5. Список result должен быть заполнен корректными парами согласно условию задачи.
*/
public class Solution {
public static List<Pair> result = new LinkedList<>();
public static void main(String[] args) throws IOException {
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
BufferedReader file = new BufferedReader(new FileReader(read.readLine()));
String str;
StringBuilder sb = new StringBuilder();
ArrayList<String> set = new ArrayList<>();
while ((str = file.readLine()) != null) {
sb.append(str);
sb.append(" ");
}
read.close();
file.close();
sb.deleteCharAt(sb.indexOf("\uFEFF"));
String strB = sb.toString();
String[] setString = strB.split(" ");
set.addAll(Arrays.asList(setString));
System.out.println(set);
for (int i = 0; i < set.size(); i++) {
String s = set.get(i);
for (int j = i + 1; j < set.size(); j++) {
StringBuilder sbb = new StringBuilder(set.get(j));
sbb.reverse();
String strr = sbb.toString();
if (s.equals(strr)) {
Pair pers = new Pair();
pers.first = s;
pers.second = set.get(j);
if (! result.contains(pers))
result.add(pers);
}
}
}
for (Pair p : result) {
System.out.println(p.first + " " + p.second);
}
}
public static class Pair {
String first;
String second;
Pair() {
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Pair pair = (Pair) o;
if (first != null ? !first.equals(pair.first) : pair.first != null) return false;
return second != null ? second.equals(pair.second) : pair.second == null;
}
@Override
public int hashCode() {
int result = first != null ? first.hashCode() : 0;
result = 31 * result + (second != null ? second.hashCode() : 0);
return result;
}
@Override
public String toString() {
return first == null && second == null ? "" :
first == null ? second :
second == null ? first :
first.compareTo(second) < 0 ? first + " " + second : second + " " + first;
}
}
}