luogu#P11314. [RMI 2021] 礼物 / Present

[RMI 2021] 礼物 / Present

题目背景

译自 9th Romanian Master of Informatics, RMI 2021 D1T2。4s,0.5G\texttt{4s,0.5G}

题目描述

定义一个集合 SS好的,当且仅当:

  • SS 为有限集合;
  • SS 中只包含正整数;
  • x,yS\forall x,y\in S,都有 gcd(x,y)S\gcd(x,y)\in S

注意到 \varnothing 也是好的

Laikan 序

定义好的集合 A,BA,B 满足 A<BA\lt B,当且仅当下列条件至少有一个成立:

  • maxA<maxB\max A\lt \max B
  • $\max A=\max B\land A\backslash \{\max A\}\lt B\backslash\{\max B\}$。

特别地,定义 max=\max \varnothing=-\infty

不难发现,对于好的集合 SS,这总是良定义的。

你要将一个好的集合 SS 作为礼物送给你的挚友。

由于你们已经分隔 kk 天,你想要让这个礼物更有纪念意义。

于是,你将所有好的集合按照 Laikan 序 排序,得到一个无穷序列 S0,S1,S_0,S_1,\cdots。你将要把 SkS_k 送给你的挚友。

你想要知道,你要送的集合里面的元素是什么。

输入格式

本题单个测试点内有多组测试数据。

第一行,一个正整数 TT,表示测试数据组数。

接下来 TT 组测试数据,每组测试数据包含一行一个整数 kk

输出格式

对于每组测试数据,输出一行。

第一个数,表示 S|S|

接下来 S|S| 个数,升序输出 SS 中的元素。

5
0
1
2
3
4
0
1 1
1 2
2 1 2
1 3
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

提示

对于 100%100\% 的数据,保证:

  • 1T51\le T\le 5
  • 0k1.5×1090\le k\le 1.5\times 10^9
子任务编号 NN\le 得分
1 1 102 10^2 88
2 2 106 10^6 2121
3 3 5×108 5\times 10^8 4141
4 4 109 10^9 1414
5 5 1.5×109 1.5\times 10^9 1616