CF1858C Yet Another Permutation Problem

题目描述

# 又一个排列问题 Alex 收到了一个名为 "GCD 排列" 的游戏作为生日礼物。这个游戏的每一轮进行如下操作: - 首先,Alex 选择一个整数序列 $ ^{\dagger} $ $ a_1, a_2, \ldots, a_n $ ,其中整数范围从 $ 1 $ 到 $ n $ 。 - 然后,对于每个 $ i $ 从 $ 1 $ 到 $ n $ ,计算整数 $ d_i = \gcd(a_i, a_{(i \bmod n) + 1}) $ 。 - 本轮的得分是 $ d_1, d_2, \ldots, d_n $ 中不同数字的数量。 Alex 已经玩了几轮游戏,所以他决定找一个整数序列 $ a_1, a_2, \ldots, a_n $ ,使得它的得分尽可能地大。 回顾一下,$ \gcd(x, y) $ 表示 $ x $ 和 $ y $ 的 [最大公约数(GCD)](https://en.wikipedia.org/wiki/Greatest_common_divisor),而 $ x \bmod y $ 表示将 $ x $ 除以 $ y $ 的余数。 $ ^{\dagger} $ 长度为 $ n $ 的排列是一个由 $ n $ 个不同整数组成的数组,整数范围从 $ 1 $ 到 $ n $ 且顺序任意。例如,$ [2,3,1,5,4] $ 是一个排列,但 $ [1,2,2] $ 不是排列(数组中有重复的 $ 2 $),$ [1,3,4] $ 也不是排列(虽然 $ n=3 $,但数组中有 $ 4 $)。

输入格式

第一行包含一个整数 $ t $($ 1 \le t \le 10^4 $) — 测试用例的数量。 每个测试用例由一行组成,包含一个整数 $ n $($ 2 \le n \le 10^5 $) — 数列中的整数数量。 保证所有测试用例中的 $ n $ 总和不超过 $ 10^5 $。

输出格式

对于每个测试用例,输出一行包含 $ n $ 个不同整数 $ a_{1},a_{2},\ldots,a_{n} $($ 1 \le a_i \le n $) — 得分最大的排列。 如果有多个得分相同的排列,可以输出其中任何一个。 ## 样例 #1 ### 样例输入 #1 ``` 4 5 2 7 10 ``` ### 样例输出 #1 ``` 1 2 4 3 5 1 2 1 2 3 6 4 5 7 1 2 3 4 8 5 10 6 9 7 ```

说明/提示

在第一个测试用例中,Alex 想要找一个由整数 $ 1 $ 到 $ 5 $ 组成的排列。对于排列 $ a=[1,2,4,3,5] $,数组 $ d $ 等于 $ [1,2,1,1,1] $。它包含 $ 2 $ 个不同的整数。可以证明,长度为 $ 5 $ 的排列中没有比这个得分更高的。 在第二个测试用例中,Alex 想要找一个由整数 $ 1 $ 到 $ 2 $ 组成的排列。只有两种这样的排列:$ a=[1,2] $ 和 $ a=[2,1] $。在这两种情况下,数组 $ d $ 都等于 $ [1,1] $,所以这两种排列都是正确的。 在第三个测试用例中,Alex 想要找一个由整数 $ 1 $ 到 $ 7 $ 组成的排列。对于排列 $ a=[1,2,3,6,4,5,7] $,数组 $ d $ 等于 $ [1,1,3,2,1,1,1] $。它包含 $ 3 $ 个不同的整数,所以得分等于 $ 3 $。可以证明,由整数 $ 1 $ 到 $ 7 $ 组成的排列中没有得分更高的。