蒋干
题号:NC291825
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}嗨!不过区区信件,何妨故友一观?
\hspace{15pt}幸吾有备而来,不然为汝所戏矣。
\hspace{15pt}亏我一世英名,竟上了周瑜的大当。
\hspace{15pt}唉!假信害我不浅啊……
\hspace{15pt}蒋干是三国杀移动版的一个武将,他可以猜测对手替换「花色」的牌。

\hspace{15pt}三国杀的一张牌由两个仅包含英文字母和数字的字符串「花色」、「牌名」组成。

\hspace{15pt}三国杀的「牌库」可以视为一个有 n 张牌的多重集合 \Bbb S。yzc 现在有 m 张「手牌」,yzc 初始「手牌」集合一定是「牌库」的一个多重集合子集。此外,还有一个大小为 k 的「花色」多重集合
\hspace{15pt}yzc必须从这个集合中选择一个「花色」替换掉自己一张「手牌」的「花色」。然后 yzc 会展示自己的所有「手牌」。yzc 不能让蒋干知道替换花色点数的「手牌」是什么,应该怎么替换「手牌」的「花色」?
\hspace{15pt}蒋干只知道 yzc 替换后的「手牌」集合和「牌库」的信息而不知道「花色」集合的信息。
\hspace{15pt}如果 yzc 替换「花色」后的「手牌」集合不是「牌库」的子集或 yzc 替换「花色」后的「手牌」集合都是同样的牌,那么蒋干就可以知道 yzc 替换的牌是什么;否则蒋干就不会知道。具体的替换例子请查看三个样例!

\hspace{15pt}谋周瑜为本题提供了形式化描述:
\hspace{15pt}定义:
\hspace{23pt}\bullet\,牌库为多重集合 \Bbb S = \big\{(c_i, r_i)\big\}_{i=1}^n,其中 c_i, r_i \in \Sigma^*\Sigma 为字母数字字符集),分别表示花色与牌名。
\hspace{23pt}\bullet\,初始手牌集合为多重集合 \Bbb H \subseteq \Bbb S,满足 |\Bbb H| = m
\hspace{23pt}\bullet\,花色集合为多重集合 \Bbb C \subseteq \Sigma^*
\hspace{15pt}yzc进行一次替换操作:选择一个花色 c' \in \Bbb C 和一张手牌 h = (c, r) \in \Bbb H,生成新手牌集合: \Bbb H' = \big( \Bbb H \setminus \{h\} \big) \cup \big\{(c', r)\big\}
\hspace{15pt}替换后的 \Bbb H' 必须满足:
\hspace{23pt}\bullet\,合法性:\Bbb H' \subseteq \Bbb S(即 \forall (c'', r'') \in \Bbb H',\, \text{count}_{\Bbb H'}(c'', r'') \leq \text{count}_{\Bbb S}(c'', r'')
\hspace{23pt}\bullet\,非平凡性:存在至少两张不同的牌,即 \exists (c_1, r_1), (c_2, r_2) \in \Bbb H' 使得 (c_1, r_1) \neq (c_2, r_2)
\hspace{15pt}判断是否存在一次替换操作,使得 \Bbb H' 同时满足上述约束条件。

输入描述:

\hspace{15pt}第一行三个正整数 n,m,k \left( 2 \leq m,k \leq n \leq 10^5 \right) 分别代表「牌库」的牌数、yzc 的手牌数、蒋干给的花色集合大小。 
\hspace{15pt}此后 n 行,每行输入两个字符串,分别代表「牌库」中一张牌的「花色」和「牌名」。
\hspace{15pt}此后 m 行,每行输入两个字符串,分别代表 yzc 的一张「手牌」的「花色」和「牌名」。
\hspace{15pt}此后 k 行,每行输入一个字符串,代表蒋干提供的「花色」集合。
\hspace{15pt}保证 yzc 初始「手牌」一定是「牌库」的一个子集,输入中所有字符串仅包含英文字母和数字且长度和小于等于 10^6

输出描述:

\hspace{15pt}如果无论怎么替换都会被知道,直接输出 \rm No

\hspace{15pt}否则,请参考下方的格式输出。
\hspace{15pt}第一行输出 \rm Yes
\hspace{15pt}第二行输出两个字符串表示替换的「手牌」在替换前的「花色」、「牌名」。
\hspace{15pt}第三行输出两个字符串表示替换的「手牌」在替换后的「花色」、「牌名」。

\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
4 2 3
YBB Nana7mi
Arihara Nanami
Arihara Nanami
Nanami Nanami
Arihara Nanami
Arihara Nanami
Arihara
Nanami
Tomotake

输出

复制
Yes
Arihara Nanami
Nanami Nanami

说明

\hspace{15pt}在这个样例中,yzc 将 \texttt{ 替换为 \texttt{ 能保证不被蒋干猜出;而其他的替换方法都能被蒋干猜出替换的「手牌」。
示例2

输入

复制
2 2 2
Shrayuki Noa
Shrayuki Noa
Shrayuki Noa
Shrayuki Noa
Shrayuki
Shrayuki

输出

复制
No

说明

\hspace{15pt}无论 yzc 怎么替换,手牌都会是相同的牌,因此一定能被蒋干猜出替换的手牌
示例3

输入

复制
2 2 2
Yoshino Tomotake
Murasame Tomotake
Yoshino Tomotake
Murasame Tomotake
Murasame
Murasame

输出

复制
Yes
Murasame Tomotake
Murasame Tomotake

说明

\hspace{15pt}注意 yzc 替换前后的手牌可以是一样的。