#CODEFORCESP2874. Substrings Sort (※)

Substrings Sort (※)

题目描述

给您 nn 个字符串。每个字符串都由小写英文字母组成。将给定的字符串重新排列(重新排序),使每个字符串前面的所有字符串都是它的子串。

如果可以在字符串 bb中选择几个连续的字母组成 aa,则字符串 aa是字符串 bb的子串。例如,字符串 "for "作为子串包含在字符串 "codeforces"、"for "和 "soefore "中,但作为子串不包含在字符串 "four"、"fofo "和 "rof "中。

输入描述

第一行包含一个整数 nn1n1001 \le n \le 100)--字符串的数量。

接下来的 nn行包含给定的字符串。每个字符串的字母数从11100100,包括首尾两个字母。每个字符串由小写英文字母组成。

有些字符串可能相等。

输出描述

如果无法按要求的顺序重新排列给定字符串 nn,则打印 "NO"(不带引号)。

否则打印 "是"(不带引号)和按要求顺序排列的 nn个给定字符串。

样例 #1

样例输入 #1

5
a
aba
abacaba
ba
aba

样例输出 #1

YES
a
ba
aba
aba
abacaba

样例 #2

样例输入 #2

5
a
abacaba
ba
aba
abab

样例输出 #2

NO

样例 #3

样例输入 #3

3
qwerty
qwerty
qwerty

样例输出 #3

YES
qwerty
qwerty
qwerty

说明

在第二个示例中,由于字符串 "abab "不是字符串 "abacaba "的子串,因此不能对字符串重新排序。