misc#P26002. 数字王国的警报密码

数字王国的警报密码

题目描述

在数字王国中,国王最近遇到一个棘手的难题。他需要为宝库设置一系列长度为 nn 且严格递增的密码数字。然而,王国的古老魔法有一个特殊的禁忌:任何一个连续密码段(至少包含一个数字)的总和,都绝对不能是某个神秘数字 kk 的倍数。一旦违反,宝库的警报就会响起,后果不堪设想。 国王将此重任交给了你,他的首席密码师。你需要为每次任务设计符合要求的密码序列。 作为最优秀的密码师,你不仅要构造出满足条件的序列,还要确保它是最优的:在所有可能的合法序列中,你需要找出那个字典序最小的序列。

什么是字典序最小? 我们比较两个长度相同的序列 A=[a1,a2,...,an]A = [a_1, a_2, ..., a_n]B=[b1,b2,...,bn]B = [b_1, b_2, ..., b_n]

  • 从第一个位置开始比较
  • 找到第一个满足 aibia_i \neq b_i 的位置 ii
  • 如果 ai<bia_i < b_i,则称序列 AA 的字典序小于序列 BB
  • 如果所有对应位置的元素都相等,则两个序列字典序相同

你将面对多次挑战(多次测试数据)。每次挑战会给你两个关键数字: nn:你需要设置的密码序列的长度 kk:那个神秘的危险数字。

你的任务是构造一个严格单调递增的正整数序列a1,a2,...,ana_1,a_2,...,a_n,使得该序列中任意一个长度至少为 11 的连续子序列(即连续几个密码)的数字之和,都不能被 kk 整除,并且使它的字典序最小。

输入格式

第一行输入一个整数 T(1T100000)T(1 \leq T \leq 100000) 代表你将面临的挑战次数 接下来 TT 组数据,每组数据一行,包含两个整数 nnkk (1n,k2×1051 \leq n,k \leq 2\times10^5)。

注意:所有挑战中的 kk 的总和不会超过 2×1062\times10^6

输出格式

对于每一次挑战: 如果存在满足要求的密码序列,则输出一行 nn 个用空格分隔的整数,代表你构造的序列。

如果无论怎样都无法构造出满足“连续和禁忌”的递增序列,则输出一行 -1

3
3 10
2 3
100 1
1 2 3
1 4
-1