#285. #2328. 「清华集训 2017」避难所
#2328. 「清华集训 2017」避难所
说明
对于一个正整数 nnn,我们定义他在 bbb 进制下,各个位上的数的乘积为 p=F(n,b)p = F(n, b)p=F(n,b)。
比如 F(3338,10)=216F(3338, 10) = 216F(3338,10)=216。
考虑这样一个问题,已知 ppp 和 bbb,求最小的 nnn 满足 p=F(n,b)p = F(n, b)p=F(n,b)。
这是一个非常有趣的问题,对于一些 bbb 来说,我们可以贪心来做,比如如果 b=10,p=216b=10, p=216b=10,p=216。
我们可以从 b−1b-1b−1 到 222 试除,直到 ppp 为 111 为止,答案是 389389389,可以验证 389389389 是满足 p=F(n,b)p = F(n, b)p=F(n,b) 最小的 nnn。
但是对于一些进制 bbb,是不能用贪心做的,比如 b=9,p=216b = 9, p = 216b=9,p=216。使用贪心得到的解是 333833383338,而最优解是 666666666。(均为 999 进制下的。)
本题便是在给定进制 bbb 的情况下,举出一个这样的反例,或指出这样的反例不存在。
由于计算资源所限,反例中所有数字的乘积不能超过 101810^{18}1018。如果最小的反例中所有数字的乘积超过了 101810^{18}1018,那么也应该输出 −1-1−1。
输入格式
从标准输入读入数据。
第一行一个整数 ttt,表示一共有 ttt 组数据。
接下来每行一个整数 bbb,表示进制。
输出格式
输出到标准输出。
如果不存在反例,输出一行一个整数 −1-1−1。
如果存在反例,首先输出一个整数 kkk,表示反例 nnn 的位数,接下来在同一行输出 kkk 个十进制整数,表示任意一个反例的最优解。
样例
输入
3
8
9
10
输出
-1
3 6 6 6
-1
数据范围与提示
对于第 111 个测试点,分值为 303030,1≤n≤321 \leq n \leq 321≤n≤32;
对于第 222 个测试点,分值为 404040,1≤n≤1001 \leq n \leq 1001≤n≤100;
对于第 333 个测试点,分值为 303030,1≤t≤200,1≤n≤1000001 \leq t \leq 200, 1 \leq n \leq 1000001≤t≤200,1≤n≤100000。