邪恶的巫师贾方(Jafar)收集了大量的神灯。他喜欢抚摸它们、擦拭灰尘、并在其中端详自己的倒影。他几乎同样喜爱所有的神灯,它们都非常美丽,但对于任意两盏神灯,他总是更喜欢其中的一盏。贾方将他的神灯摆放在一条很长的走廊里,所有的神灯排成一排。
一天,他决定将所有的神灯沿着他从走廊一端走到另一端的路径重新排列,使得对于任意两盏相邻的神灯,他都更喜欢后面的一盏(即排在后面的比排在前面的更好)。换句话说,贾方希望神灯的品质呈现出某种升序排列。
你是这位巫师的新仆人,你必须满足你主人的愿望。主要的问题在于你对贾方的喜好一无所知。你可以向贾方询问任意两盏神灯中哪一盏更好,但你必须小心,他现在正忙于他的统治世界计划,你不能问他太多的问题。
请注意,喜好关系可能是非传递性的(即可能存在 $A$ 优于 $B$,$B$ 优于 $C$,但 $C$ 优于 $A$ 的情况)。
你应该输出所有神灯的期望顺序,或者向贾方报告该顺序不存在。
输入格式
第一行包含一个整数 $N$ ($1 \le N \le 1000$)。
对于你的每个提问,输入会给出一个回答——如果 $Y$ 比 $X$ 更好,则为字符串 "YES";如果 $X$ 比 $Y$ 更好,则为字符串 "NO"。
输出格式
你的提问——每行包含三个整数 $1, X, Y$ ($1 \le X, Y \le N, X \ne Y$)。你询问的问题不能超过 $10\,000$ 个。
在最后一行:输出整数 $0$,然后输出 $N$ 个整数 $a_i$ ($1 \le a_i \le N$),表示期望的排列;如果不存在这样的排列,则输出 $N$ 个 $0$。
每行中的所有整数都应由空格隔开。
样例
输入样例 1
3 YES NO NO
输出样例 1
1 1 2 1 2 3 1 1 3 0 3 1 2
说明
从你的程序到交互程序的管道以及返回的管道大小是有限的。你的程序必须从标准输入中读取以避免死锁。死锁情况会被报告为超过实际时间限制(Wall time-limit exceeded)。
要清空标准输出流,请使用以下语句:
- 在 C 中使用
fflush(stdout); - 在 C++ 中使用
cout.flush(); - 在 Java 中使用
System.out.flush();
如果你的程序在标准输入上接收到 EOF(文件结束)信号,它必须立即退出,退出码为 0。不遵守此要求可能会导致超时错误(Time-limit exceeded)。