Задача "Игра в города"

Всем известны правила игры "в города": первый игрок называет произвольный город, следующий - город, название которого начинается на ту же букву, на которую заканчивается название предыдущего города, и т.д. Аналогичным образом можно играть не в города, а, например, в животных.

Задан список допустимых для этой игры слов, слова в нем могут повторяться. Напишите программу, определяющую, в каком порядке в процессе игры должны быть названы слова из списка, чтобы каждое слово было использовано ровно столько раз, сколько оно в нем встречается.

Входные данные. В первой строке входного файла записано целое число N - количество слов в списке (1≤N≤1000), а в последующих N строках - сами слова. Каждое из них является последовательностью не более чем из 10 строчных английских букв.

Выходные данные. Выведите в выходной файл слова в искомом порядке, либо сообщение "NO", если такого порядка не существует. Каждое слово должно быть выведено в отдельную строку выходного файла.

Пример входного файла

4
b
ab
bc
bb

Пример выходного файла

ab
bb
b
bc