玛丽安娜女王有三个女儿(公主们)。玛丽安娜将她的皇家印章锁在一个保险箱里。保险箱由一个密码保护:这是一个来自皇家词典的八字母英文单词。密码每隔几天就会更换。
女王经常去度假,在此期间,公主们学习如何治理王国。然而,她们中没有人知道密码,玛丽安娜希望任何两位公主在达成协议的情况下都能打开保险箱。为此,她在三张卡片上写下了三个密钥:来自皇家词典的四字母英文单词。每个密钥都由密码的字母组成:从八个字母中选出四个并可能进行重排,使得结果是一个词典单词。之后,女王将卡片放入帽子中,然后三位公主依次随机抽取一张卡片并自己保管,不向他人展示。
在手头有皇家词典的情况下,请为女王和公主们设计一种安排,使得在玛丽安娜分发密钥后,任何两位公主都能利用她们手中的两个密钥确定密码。
交互协议
在本题中,你的程序将在每个测试点上运行两次。每一行输入均以换行符结尾。词典在每个测试点和样例中都是相同的:单词取自名为 ENABLE2K 的自由分发词汇表。输入和输出中的所有单词均由小写英文字母组成。
第一轮
在第一轮中,你的程序代表玛丽安娜女王。第一行包含单词 “password”。第二行包含一个整数 $n$:需要选择密钥的密码数量($1 \le n \le 10\,000$)。接下来的 $n$ 行,每行包含一个密码:一个来自皇家词典的八字母单词。只有当能够从其字母中构造出至少三个不同的密钥时,该单词才能作为密码给出。
之后,给出皇家词典。描述占用四行,在每个测试点中均相同。第一行包含一个整数 $n_8$:词典中八字母单词的数量($n_8 = 28\,558$)。第二行是按字典序排列的八字母单词列表,以空格分隔。第三行包含一个整数 $n_4$:词典中四字母单词的数量($n_4 = 3919$)。第四行是按字典序排列的四字母单词列表,以空格分隔。
输出 $n$ 行:对于每个密码,输出玛丽安娜写在卡片上的三个密钥,顺序不限,以空格分隔。每个密钥都是来自皇家词典的四字母单词,由密码的字母组成:从其八个字母中选出四个并可能进行重排,使得结果是一个词典单词。密钥选择没有其他限制:例如,一个密码可以转化为三个相同的密钥,而另一个密码可以转化为一个相同的密钥和两个不同的密钥。
第二轮
在第二轮中,你的程序代表公主们。第一行包含单词 “keys”。第二行包含一个整数 $m$:密钥对的数量($1 \le m \le 60\,000$)。接下来的 $m$ 行,每行包含一对以空格分隔的密钥:每一对都是由评测程序从第一轮输出的某个密钥三元组中选出的。选择方式如下:首先,移除一个密钥,然后,剩下的两个密钥可能会被交换。这种选择是确定性的:如果两个解在第一轮中产生了相同的输出,它们在第二轮中将获得相同的输入。
之后,给出皇家词典。描述占用四行,与第一轮完全相同。
输出 $m$ 行:对于每一对密钥,输出正确的密码。
样例
输入 1
password 2 password couthier 28558 aardvark aardwolf <...> zyzzyvas 3919 aahs aals abas <...> zori zyme
输出 1
swap road saws thou thou thou
输入 2
keys 4 swap road thou thou saws swap road saws 28558 aardvark aardwolf <...> zyzzyvas 3919 aahs aals abas <...> zori zyme
输出 2
password couthier password password
说明
请注意,词典中的最后一个八字母单词 “zyzzyvas” 是一个不能作为密码的单词示例:从它的字母中,只能构造出一个密钥 “yays”。回想一下,只有当至少能从其字母中构造出三个密钥时,该单词才能作为密码。词典中有 70 个八字母单词不满足此条件。