Peter 的 $N$ 个朋友(编号为 $1$ 到 $N$)每个人都购买了恰好一套狂欢节服装,以便在今年的狂欢节聚会上穿着。一共有 $C$ 种不同的服装,编号为 $1$ 到 $C$。然而,Peter 的一些朋友可能购买了相同款式的服装。Peter 想知道他的哪些朋友购买了相同的服装。为此,他组织了一些聚会,并在每次聚会中邀请他的一些朋友。Peter 知道,在每次聚会结束后的第二天早上,他将无法回忆起前一天晚上看到了哪些服装,而只能记住在聚会上看到了多少种不同款式的服装。Peter 想知道,他是否仍然可以通过合理选择每次聚会的宾客,从而在最终得知哪些朋友拥有相同款式的服装。请帮助 Peter!
交互
你的程序必须通过标准输入和输出与交互器(grader)进行交互。
首先,你的程序必须读取一行,包含朋友的数量 $N$。
然后,你的程序应按如下方式与交互器进行交互:要举行一次聚会,程序需输出单行,其中包含要邀请的人数 $k$($1 \le k \le N$),紧接着是该聚会邀请的朋友编号列表(参见样例)。不要忘记刷新输出(例如,使用 fflush(stdout); 或 cout << endl;)!随后,你的程序必须读取回答:单行,表示他的朋友在这次聚会上穿着的不同服装款式的数量。
一旦你的程序确定了每个朋友购买了哪种服装,它应该在单行中输出此结果。该行以数字 0 开头,后跟 $N$ 个空格分隔的整数 $c_1, \dots, c_N$(对于所有 $i$,满足 $1 \le c_i \le C$):$c_i$ 表示第 $i$ 个朋友购买的服装款式。服装款式的具体编号并不重要;只需满足相同的服装具有相同的编号,不同的服装具有不同的编号,且所有编号都在 $1$ 到 $C$ 之间即可。
输出结果后,你的程序必须立即终止(通过 return 0;)。
数据范围与子任务
我们总是满足 $2 \le N \le 150$。
如果你的程序在某个测试用例中使用了 $P$ 次聚会查询来确定服装分配,它的得分规则如下:
- 若 $11\,500 < P$,得 $0$ 分;
- 若 $3\,500 < P \le 11\,500$,得该测试点 $20\%$ 的分数;
- 若 $P \le 3\,500$,得该测试点 $100\%$ 的分数。
样例
输入格式 1
5 3 1 2 1
输出格式 1
5 1 2 3 4 5 2 2 5 2 1 2 1 4 0 2 1 2 3 1
说明
第一个样例对应 5 个朋友,他们的服装编号分别为 1 2 1 3 2。
在交互过程中:
- 程序首先读取 $N = 5$。
- 程序询问邀请所有 5 个人的聚会(输出
5 1 2 3 4 5),交互器返回有 3 种不同的服装(输入3)。 - 程序询问邀请 2 和 5 的聚会(输出
2 2 5),交互器返回有 1 种不同的服装(输入1)。 - 程序询问邀请 1 和 2 的聚会(输出
2 1 2),交互器返回有 2 种不同的服装(输入2)。 - 程序询问邀请 4 的聚会(输出
1 4),交互器返回有 1 种不同的服装(输入1)。 - 最后程序输出答案
0 2 1 2 3 1。
当然,第一个样例中指定的聚会并不足以安全地确定服装分配——解决方案程序只是运气好猜对了。
输入格式 2
3 2 1
输出格式 2
3 1 2 3 2 1 3 0 1 2 1
说明
第二个样例对应 3 个朋友,他们的服装编号分别为 1 2 1。
在交互过程中:
- 程序首先读取 $N = 3$。
- 程序询问邀请 1, 2, 3 的聚会(输出
3 1 2 3),交互器返回有 2 种不同的服装(输入2)。 - 程序询问邀请 1 和 3 的聚会(输出
2 1 3),交互器返回有 1 种不同的服装(输入1)。 - 最后程序输出答案
0 1 2 1。
指定这两个聚会足以唯一确定服装分配。