#L4794. 「RMI 2021」Present

「RMI 2021」Present

题目描述
题目译自 Romanian Master of Informatics 20212021 Day11 T22 「Present」

莱卡决定为她的好朋友高地女巫阿兹莎准备一份礼物。出于未知的原因,这份礼物将是一组有限的正整数。如果只有这些,选择礼物将是一件简单的事情,但几个因素使这件事变得复杂。

首先,莱卡的竞争对手弗拉托特拥有神秘的魔法力量:给定两个整数 xxyy,她可以创建 xxyy 的最大公约数(即 gcd(x,y)\gcd(x, y))。如果莱卡送了一份礼物,弗拉托特可以立即添加到礼物中(即如果她送了一组 AA,其中 x,yAx, y \in A,但 gcd(x,y)A\gcd(x, y) \notin A),那么弗拉托特就会立即嘲笑她的对手。因此,莱卡的礼物不能通过弗拉托特的魔法力量进行改进:如果她送了 AA,那么对于所有的 x,yAx, y \in A,必须满足 gcd(x,y)A\gcd(x, y) \in A

其次,莱卡希望礼物具有某种特殊意义。自从她遇到阿兹莎已经过去了 KK 天,她希望礼物能体现这一事实。因此,她将满足上述条件的所有集合按照莱卡顺序(如下所述)排列,得到一个无限的有限集合序列 S0,S1,S_{0}, S_{1}, \ldots 她想要选择并送出集合 SKS_{K}。你能帮她做到吗?


莱卡顺序:取两个集合 AABB。那么,当且仅当 maxA<maxB\max A<\max BmaxA=maxB\max A=\max BA\{maxA}A \backslash\{\max A\} 在莱卡顺序中先于 B\{maxB}B \backslash\{\max B\} 时,AA 在莱卡顺序中先于 BB。特别的,令 max=\max \emptyset=-\infty。请注意,对于有限的正整数集合,这总是明确定义的。


输入格式
输入包含多组数据。第一行包含一个整数 TT。接下来的 TT 行每行描述了一组测试数据,每行包含一个整数 KK ,我们想要知道 SKS_{K}


输出格式
对于这 TTKK 的值中的每一个,输出集合 SKS_{K}。要输出一个集合,输出一行,首先是它的元素个数,然后是它的元素,按升序排列。


样例 1

输入

5
0
1
2
3
4

输出

0
1 1
1 2
2 1 2
1 3

请注意,S0=S_{0}=\emptyset, S1={1}S_{1}=\{1\}, S2={2}S_{2}=\{2\}, S3={1,2}S_{3}=\{1,2\}, S4={3}S_{4}=\{3\}, S5={1,3}S_{5}=\{1,3\}, S6={1,2,3}S_{6}=\{1,2,3\}, S100={1,2,3,7,8}S_{100}= \{1,2,3,7,8\}, S1000={1,2,3,5,10,11,12}S_{1000}=\{1,2,3,5,10,11,12\}。这些正是样例中输出的集合(以及它们的大小)。请注意,S6{2,3}S_{6} \neq\{2,3\},这是因为 2,3{2,3}2,3 \in\{2,3\},但 gcd(2,3)=1{2,3}\operatorname{gcd}(2,3)=1 \notin \{2,3\}

样例 2

输入

4
5
6
100
1000

输出

2 1 3
3 1 2 3
5 1 2 3 7 8
7 1 2 3 5 10 11 12

数据范围与提示
对于所有输入数据,满足:

  • 1T51 \leq T \leq 5

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
11 88 0K1000 \leq K \leq 100
22 2121 0K1060 \leq K \leq 10^6
33 4141 0K51080 \leq K \leq 5\cdot 10^8
44 1414 0K1090 \leq K \leq 10^9
55 1616 0K1.51090 \leq K \leq 1.5\cdot 10^9