Alisa 想要通过一条数字线路向 Eva 发送一条消息。消息是一个英文单词。
不幸的是,目前这条数字线路只能传输一些噪声:$0$ 到 $10^9 - 1$ 之间的随机整数。Alisa 知道接下来将要传输的 $10\,000$ 个整数的序列。
幸运的是,Alisa 有一种超能力:她可以从序列的任意位置删除任意数量的元素。剩余元素的相对顺序保持不变。
不幸的是,在此之后,大约一半的整数会在传输过程中丢失:每个传输的整数都会以 $1/2$ 的概率消失。剩余元素的相对顺序再次保持不变。
Alisa 和 Eva 应该如何行动来传输给定的单词?
交互
在本题中,你的程序在每个测试点上会被运行两次。在输入和输出中,同一行上的数字由空格分隔。每一行输入均以换行符结束。
第一轮
在第一轮中,程序代表 Alisa。第一行包含名称 “Alisa”。第二行包含一个来自英语词典的单词,其长度为 $2$ 到 $15$ 个字母,且由小写英文字母组成。第三行包含一个整数 $n$,即序列的长度(在本题中,$n$ 始终等于 $10\,000$)。第四行包含 $n$ 个 $0$ 到 $10^9 - 1$ 之间的整数:初始序列。这些数字由伪随机数生成器预先选定,范围内的所有数字等概率出现。
程序应输出 Alisa 决定保留在序列中的数字。第一行输出一个整数 $m$:保留的整数个数。第二行输出保留的数字,按它们在初始序列中的顺序排列。
第二轮
在第二轮中,程序代表 Eva。第一行包含名称 “Eva”。第二行包含一个整数 $k$,即序列中剩余的整数个数。第三行包含 $k$ 个 $0$ 到 $10^9 - 1$ 之间的整数:剩余的序列本身。Alisa 决定保留在序列中的每个数字都有 $1/2$ 的概率存在,有 $1/2$ 的概率丢失。数字丢失的方式在每个测试点中是预先固定的,因此,如果程序在第一轮中做出相同的选择,它们在第二轮中将得到相同的序列。
输出一个英文单词:Alisa 应该发送给 Eva 的单词。
样例
对于每个测试点,第二轮的输入取决于程序在第一轮中的输出。下面展示了某个程序在第一个测试点上的两轮运行过程。为了简洁,序列仅显示了部分内容。完整版本的样例可以在 samples.zip 中查看。
输入 1
Alisa spark 10000 833080662 16249270 933346436 811379468 <...> 13286897 459644281
输出 1
3900 933346436 811379468 877083772 408973036 <...> 583178591 13286897
输入 2
Eva 1955 811379468 408973036 585189166 111199534 <...> 226510051 829146141
输出 2
spark