如你所知,你正在参加中国构造题挑战赛(CCPC)。毫无疑问,作为“构造王国”的出题学校——中山大学,非常渴望你能挑战一些相关的构造问题。
小 U 是构造王国的一名学生。在算法课上,小 U 学习了 MCOP(矩阵链乘法问题,Matrix Chain Ordering Problem)。以下是 MCOP 的介绍:
给定一个长度为 $n \ge 3$ 的正整数序列 $[w_1, w_2, \dots, w_n]$ 作为算法的输入。以下公式将 $n - 1$ 个矩阵相乘,最终得到一个新矩阵:
$$M = M_1 \times M_2 \times \dots \times M_{n-1}$$
其中 $M_i$ 是一个大小为 $w_i \times w_{i+1}$ 的矩阵。矩阵乘法满足结合律,因此改变相乘的顺序会得到相同的最终矩阵 $M$,但操作次数可能会有所不同。该问题的目标是在 $(n - 2)!$ 种可能的策略中找到一种最优的相乘策略,使得矩阵相乘所需的总操作次数最小。这里假设将大小为 $p \times q$ 和 $q \times r$ 的矩阵相乘将得到一个大小为 $p \times r$ 的矩阵,需要 $pqr$ 次操作。在最优策略下计算 $M$ 所需的最小总操作次数记为 $\text{MCOP}([w_1, w_2, \dots, w_n])$。
小 U 在课堂上已经学会了如何以足够好的时间复杂度解决这个问题。但作为构造王国的学生,小 U 自然而然地想到了以下问题:
给定一个整数 $X$,满足 $1 \le X \le 10^9$。你需要构造一个长度为 $l$ 的整数序列 $[a_1, a_2, \dots, a_l]$,满足以下要求:
- $3 \le l \le 6$;
- 对于所有 $i \in [1, l]$,$1 \le a_i \le 4000$;
- $\text{MCOP}([a_1, a_2, \dots, a_l]) = X$。
小 U 已经使用在课堂上学到的算法实现了一个检查器(checker),而你需要做的是解决这个构造问题。
可以证明,对于任何输入 $X$,总是存在满足要求的构造。如果存在多个满足要求的构造,输出其中任意一个即可。
输入格式
本题包含多个测试用例。输入的第一行包含一个整数 $T$($1 \le T \le 500$),表示测试用例的数量。
对于每个测试用例,输入包含一行,其中有一个整数 $X$($1 \le X \le 10^9$),其含义已在题目中给出。
输出格式
对于每个测试用例:首先输出一行,包含一个整数 $l$($3 \le l \le 6$),表示构造序列的长度。然后输出一行,包含 $l$ 个整数,表示构造的序列。
样例
输入样例 1
2 90 10
输出样例 1
4 5 3 2 6 3 1 1 10
说明
对于第一个测试用例,构造的序列为 $[5, 3, 2, 6]$,这表示需要对大小分别为 $5 \times 3$、$3 \times 2$ 和 $2 \times 6$ 的三个矩阵进行链乘。考虑两种相乘策略:
- 首先,将 $M_1$ 和 $M_2$ 相乘得到一个大小为 $5 \times 2$ 的矩阵,然后与 $M_3$ 相乘,对应表达式 $(M_1 \times M_2) \times M_3$。此时的总操作次数为 $5 \times 3 \times 2 + 5 \times 2 \times 6 = 90$;
- 首先,将 $M_2$ 和 $M_3$ 相乘得到一个大小为 $3 \times 6$ 的矩阵,然后与 $M_1$ 相乘,对应表达式 $M_1 \times (M_2 \times M_3)$。此时的总操作次数为 $3 \times 2 \times 6 + 5 \times 3 \times 6 = 126$。
这里,目标是最小化总操作次数,因此 $\text{MCOP}([5, 3, 2, 6]) = \min(90, 126) = 90$。