这是一个交互式问题。
Alice 和 Bob 正在玩一个游戏。Alice 选择了一个由小写英文字母组成的字符串 $s$。Bob 可以进行形如 “? $t$” 的询问,意思是“字符串 $t$ 是 $s$ 的子序列吗?”。例如,如果 $s = \text{abc}$,那么对于询问 “? ac”,答案是 “YES”,而对于询问 “? bb”,答案是 “NO”。Bob 询问的所有 $t$ 的总长度不能太大,否则玩家会对游戏感到厌倦。
在任何时候,Bob 都可以声称他知道所选的字符串 $s$,并给出他的猜测。如果他猜对了,他就赢了,否则他就输了。
你的任务是编写一个程序,通过交互进行询问,在保证询问次数不过多的前提下赢得每一场游戏。
输入格式
在交互开始时,你的程序没有任何输入。
在每次 “?” 询问(参考输出格式)之后,会输入一行内容 —— 如果 $t$ 是 $s$ 的子序列,则输入 “YES”,否则输入 “NO”。
已知 $s$ 是一个由小写英文字母组成的非空字符串。$s$ 的长度不超过 $500$。
输出格式
按以下格式,每行输出一个询问描述:
- “? $t$” 表示询问字符串 $t$ 是否为子序列,
- “! $t$” 表示提交猜测 $s = t$。在进行此询问后,你的程序必须终止。
“?” 询问中 $t$ 的总长度不得超过 $6 \cdot 10^5$。
请记住在每次询问后刷新输出。
样例
输入 1
YES NO NO NO
输出 1
? a ? b ? c ? aa ! a
说明
样例中的空行仅为了清晰展示交互顺序;实际交互中不会输入空行。
请注意,在给出的样例中,如果只允许使用字母 a、b 和 c,那么这个猜测肯定是正确的;对于原问题,该猜测很可能会被判定为错误,因为存在其他符合所有询问的字符串,例如 “ad”。
如果可以通过删除字符串 $s$ 中的某些字符(可能不删除)得到字符串 $t$,则称 $t$ 是 $s$ 的子序列。不允许改变剩余字符的顺序。