#abc219c. [abc219_c]Neo-lexicographic Ordering

[abc219_c]Neo-lexicographic Ordering

问题陈述

高桥是 AtCoder 王国的统治者,他决定改变英文字母的小写字母顺序。

新的字母顺序用字符串 XX 表示,它是 a, b, ldots\\ldots, z 的一个排列。XX 的第 ii 个字符 (1leqileq26)(1 \\leq i \\leq 26) 是新顺序中第 ii 小的英文字母。

王国有 NN 名公民,他们的名字是 S1,S2,dots,SNS_1, S_2, \\dots, S_N,其中每个 SiS_i (1leqileqN)(1 \\leq i \\leq N) 由小写英文字母组成。按照高桥决定的字母顺序将这些名字按词典顺序进行排序。

什么是词典顺序?

简单地说,词典顺序是单词在字典中列出的顺序。作为更正式的定义,下面是确定不同字符串 SSTT 之间词典顺序的算法。

下面,我们将 SiS_i 表示为 SS 的第 ii 个字符。此外,如果 SS 在词典顺序上小于 TT,我们将把这个事实表示为 SltTS \\lt T;如果 SS 在词典顺序上大于 TT,我们将把这个事实表示为 SgtTS \\gt T

  1. LLSSTT 的长度中较小的一个。对于每个 i=1,2,dots,Li=1,2,\\dots,L,我们检查 SiS_iTiT_i 是否相同。
  2. 如果存在 ii,使得 SineqTiS_i \\neq T_i,让 jj 是最小的这样的 ii。然后,我们比较 SjS_jTjT_j。如果 SjS_j 在字母顺序中出现在 TjT_j 之前,我们确定 SltTS \\lt T 并且停止;如果 SjS_jTjT_j 之后出现,我们确定 SgtTS \\gt T 并且停止。
  3. 如果不存在这样的 ii,我们比较 SSTT 的长度。如果 SSTT 短,我们确定 SltTS \\lt T 并且停止;如果 SSTT 长,我们确定 SgtTS \\gt T 并且停止。

约束条件

  • XXa, b, ldots\\ldots, z 的一个排列。
  • 2leqNleq500002 \\leq N \\leq 50000
  • NN 是一个整数。
  • 1leqSileq10,(1leqileqN)1 \\leq |S_i| \\leq 10 \\, (1 \\leq i \\leq N)
  • SiS_i 由小写英文字母组成。(1leqileqN)(1 \\leq i \\leq N)
  • SineqSjS_i \\neq S_j (1leqiltjleqN)(1 \\leq i \\lt j \\leq N)

输入

输入以以下格式从标准输入给出:

XX NN S1S_1 S2S_2 vdots\\vdots SNS_N

输出

打印 NN 行。第 ii(1leqileqN)(1 \\leq i \\leq N) 应包含按照高桥决定的字母顺序排序时公民姓名中的第 ii 小的名字。


示例输入 1

bacdefghijklmnopqrstuvwxzy
4
abx
bzz
bzy
caa

示例输出 1

bzz
bzy
abx
caa

根据高桥设定的新字母顺序,ba 小,zy 小。因此,按照词典顺序对公民姓名排序将得到升序排列的 bzzbzyabxcaa


示例输入 2

zyxwvutsrqponmlkjihgfedcba
5
a
ab
abc
ac
b

示例输出 2

b
a
ac
ab
abc