给定两个整数 x 和 k。一只蚱蜢从数轴 OX 上的点 0 出发。
一次移动中,它可以向左或向右跳一个整数距离 d,但要求该距离不能被 k 整除,即 d≡0(modk)(注意 d 可以为负表示向左跳,正表示向右跳,且 d=0)。
请你求蚱蜢到达点 x 所需的最少步数,并输出一种对应的跳跃方案。
输入格式
- 第一行一个整数 t(1≤t≤1000),表示测试用例数量。
- 每个测试用例一行两个整数 x,k(1≤x≤100, 2≤k≤100),分别表示目标位置与跳跃限制。
输出格式
对每个测试用例输出两行:
-
第一行输出一个整数 n:到达点 x 的最少步数。
-
第二行输出 n 个整数 d1,d2,…,dn,满足:
- 每个 di 都不能被 k 整除;
- di>0 表示向右跳,di<0 表示向左跳;
- 从 0 出发按顺序跳完后,最终位置恰好为 x,即 ∑i=1ndi=x;
- 每个跳跃距离范围为 −109≤di≤109。
题目保证在给定约束下一定有解。
原题允许输出任意一种最优方案。为保证固定输出,本题统一采用如下确定性输出规则(同样保证最少步数):
- 若 xmodk=0:输出 n=1,并输出一步 x;
- 否则:输出 n=2,并输出两步 1 与 x−1(此时 1≡0(modk),且 x−1≡0(modk) 因为 x≡0(modk) 推出 x−1≡−1(modk))。
样例
输入
3
10 2
10 3
3 4
输出(其中一种)
2
7 3
1
10
1
3