В албанском языке любое высказывание представляет собой последовательность слов (не обязательно различных), отделяемых друг от друга разделителями - пробелами, знаками препинания и т.д. Известный албанский либерал Мухаммед Тахир-оглы был глубоко убеждён, что эти разделители ограничивают свободу слова. Он решил провести языковую реформу и тем самым избавиться от них. После реформы высказывания в албанском языке будут состоять из слов, ничем не отделённых друг от друга.
Против этой инициативы выступил знаменитый албанский консерватор Ахмед Касым-бей. Он указал на то, что после реформы в албанском языке вполне могут появиться высказывания, одинаковые по написанию, но образованные различными последовательностями слов - а потому совершенно разные по значению. Безусловно, такая неоднозначность ущемляет свободу слова. Теперь Ахмед мечтает найти хотя бы одно такое высказывание, чтобы поставить жирный крест на замыслах своего политического противника. Он открыл словарь албанского языка, обнаружил в нём N различных слов S[i] и понял, что в одиночку ему не справиться.
Исходные данные
Первая строка содержит целое число N (1 ≤ N ≤ 100). Каждая из следующих N строк содержит слово S[i]. Каждое слово имеет длину от 1 до 100 символов и состоит из малых латинских букв.
Результат
Выведите "NO", если искомое высказывание не существует. Иначе в первой строке выведите "YES", а во второй строке выведите это высказывание. Длина высказывания не должна превышать 20000 символов. Если задача имеет несколько решений, можно вывести любое из них.
Пример
исходные данные | результат |
---|
5
ab
acb
bc
abac
babbc
| YES
abacbabbc
|
Замечания
В примере высказывание "abacbabbc" может быть образовано последовательностями слов "abac"+"babbc" и "ab"+"acb"+"ab"+"bc".
Автор задачи: Никита Рыбак, Илья Гребнов, Дмитрий Ковалёв
Источник задачи: Timus Top Coders: Second Challenge