misc#P25025. 请输入文本

请输入文本

题目描述

小远和小涛在玩一个游戏,游戏规则是这样的:

  1. 首先,他们把 nn 个相同的球分成 mm 堆,第 ii 堆小球数量为 aia_i
  2. 接着,每轮他们会从每堆中取出一个球,并将这些取出的球组成一个新的堆。

例如:初始有 4 个小球,分成 3 堆,每堆球数分别为 1, 1, 2,第一轮从每堆中取出一个球,得到 3 个球,将它们组成一个新的堆,此时局面为 0, 0, 1, 3,移除 0 堆,局面为1, 3,同理,第二轮后局面为 2, 2,第三轮后局面为 1, 1, 2,……

众所周知这个游戏是可以无限进行下去的。且经过几轮游戏,他们的局面可能陷入循环。循环中的局面个数称为循环长度(局面是否重复只和小球堆数和每堆球数有关,与顺序无关),比如刚刚的例子循环长度为 3。

小远向小涛提出一个问题:

给定小球个数 nn 和循环长度 kk,问是否存在一个初始局面,使得游戏陷入长度为 kk 的循环?(如果多个答案,求出堆数 mm 最小的那个,如仍有多个答案,求出字典序最小的那个)。小远和小涛急着去跑阳光长跑了,于是他们决定请你来解决这个问题。

输入格式

第一行一个正整数 tt ( 1t501\leq t\leq 50 ) ,表示测试数据的组数。

接下来每行两个正整数 nn ( 1n1061\leq n\leq 10^6 ) 和k ( 1k1091\leq k\leq 10^9 ) ,表示球的数量和循环长度。

输出格式

对于每组数据,输出一行,如果存在这样的初始局面,输出这个初始局面各堆球数,每个数字间用空格隔开;否则输出一个 1-1

3
1 1
2 1
3 1
1
-1
3