#CF2139C. 蛋糕分配

蛋糕分配

C. 蛋糕分配

时间限制: 每测试 22
内存限制: 每测试 256256 兆字节

Chocola 和 Vanilla 喜欢蛋糕。今天,蛋糕店的经理给了他们总共 2k+12^{k+1} 个蛋糕。蛋糕被平均分配,因此他们每人最初得到 2k2^k 个蛋糕。

然而,Chocola 和 Vanilla 现在想要重新分配蛋糕,使得 Chocola 最终拥有恰好 xx 个蛋糕,而 Vanilla 获得剩余的 2k+1x2^{k+1} - x 个蛋糕。

在每一步中,他们可以执行以下两种操作之一:

  1. Chocola 将她一半的蛋糕给 Vanilla。此操作仅在 Chocola 当前拥有偶数个蛋糕时允许执行。
  2. Vanilla 将她一半的蛋糕给 Chocola。此操作仅在 Vanilla 当前拥有偶数个蛋糕时允许执行。

你的任务是确定达到目标分配所需的最少步数,并输出达到该最小值的任意有效操作序列

可以证明,在给定的约束条件下,有效解总是存在,且所需的最小步数不超过 120120


输入格式

每个测试包含多个测试用例。第一行包含测试用例的数量 tt (1t1000)(1 \leq t \leq 1000)。接下来是每个测试用例的描述。

每个测试用例的第一行包含两个整数 kkxx (1k60, 1x2k+11)(1 \leq k \leq 60,\ 1 \leq x \leq 2^{k+1} - 1) — 每人最初获得 2k2^k 个蛋糕,xx 是重新分配后 Chocola 应拥有的蛋糕数量。


输出格式

对于每个测试用例,输出一个整数 nn (0n120)(0 \leq n \leq 120),表示他们重新分配蛋糕所需的最少步数。

在下一行,输出 nn 个整数 o1,o2,,ono_1, o_2, \dots, o_n (oi=1 或 oi=2)(o_i = 1 \text{ 或 } o_i = 2),其中 oi=1o_i = 1 表示在第 ii 步中,Chocola 将她一半的蛋糕给了 Vanilla(操作 11),oi=2o_i = 2 表示 Vanilla 将她一半的蛋糕给了 Chocola(操作 22)。


样例

输入

4
2 3
2 4
3 7
2 5

输出

2
2 1 
0

3
2 2 1 
2
1 2 

样例解释

在第一个测试用例中,他们可以使用以下步骤,使得 Chocola 恰好拥有 x=3x = 3 个蛋糕,Vanilla 恰好拥有 2k+1x=52^{k+1} - x = 5 个蛋糕。我们用 {a,b}\{a, b\} 表示 Chocola 当前拥有 aa 个蛋糕,Vanilla 当前拥有 bb 个蛋糕。

$$\{4, 4\} \xrightarrow{o_1 = 2} \{6, 2\} \xrightarrow{o_2 = 1} \{3, 5\} $$

在第二个测试用例中,Chocola 已经拥有恰好 x=4x = 4 个蛋糕,Vanilla 已经拥有恰好 2k+1x=42^{k+1} - x = 4 个蛋糕,因此不需要任何操作。

在第三个测试用例中,他们可以使用以下步骤,使得 Chocola 恰好拥有 x=7x = 7 个蛋糕,Vanilla 恰好拥有 2k+1x=92^{k+1} - x = 9 个蛋糕。

$$\{8, 8\} \xrightarrow{o_1 = 2} \{12, 4\} \xrightarrow{o_2 = 2} \{14, 2\} \xrightarrow{o_3 = 1} \{7, 9\} $$