在弗罗茨瓦夫举办的 CERC 2024 即将到来,所有人都忙于筹备工作。甚至连弗罗茨瓦夫的小矮人们也在帮忙!作为组委会的一员,每个小矮人都领到了一块牌子,以便大家辨认。小矮人们非常有创意,每个人都想出了一个独特的昵称,并希望将其显示在牌子上。如果一个昵称的前四个字母与小矮人名字的前四个字母相匹配(我们区分大小写),则该昵称是正确的。例如,小矮人 Mathew 可以拥有一块写着 Mathy 的牌子,但他不能拥有写着 Matty 或 MATHY 的牌子。
“邋遢鬼”小矮人负责印刷这些牌子。由于他确实很邋遢,他没有记录哪块牌子属于谁。更糟糕的是,有些牌子可能包含错误。请帮助“邋遢鬼”找出哪块牌子属于谁:你将获得所有小矮人的名字列表以及牌子上所有昵称的列表。编写一个程序,判断是否存在一种将牌子分配给名字的方案,使得每块牌子上的昵称都是对应名字的正确昵称。如果存在这样的分配方案,你的程序还应将其打印出来。
输入格式
输入的第一行包含一个整数 $N$,表示小矮人的数量。接下来的 $N$ 行,每行包含一个矮人的名字,名字是由大小写英文字母组成的字符串。
接下来的 $N$ 行,每行包含一个写在牌子上的昵称,昵称是由大小写英文字母组成的字符串。
数据范围
$1 \le N \le 100\,000$,每个名字和昵称至少包含 4 个字母,最多包含 400\,000 个字母,所有名字长度之和与所有昵称长度之和均不超过 400\,000,保证没有重复的名字和昵称。
输出格式
输出的第一行应包含一个单词——如果上述分配方案可行,则输出 YES,否则输出 NO。
如果答案为 YES,则接下来的 $N$ 行应包含正确的分配方案:每行应包含小矮人的名字和分配给他的昵称,中间用单个空格隔开。如果存在多种可能的分配方案,打印其中任意一种即可。
样例
样例输入 1
4 Slopy Mathy Thinky Cody Thinky Math Slopppy Codythesecond
样例输出 1
YES Cody Codythesecond Mathy Math Slopy Slopppy Thinky Thinky
样例输入 2
3 Writy Buggy Solvy Bogg Write Solvy
样例输出 2
NO