#T064. 中位数

中位数

题目描述

给定一个长度为 nn 的数组和一个正整数 kk,数组元素固定为 [1,2,3,...,n][1, 2, 3, ..., n],其中 nn 一定是奇数。

现在你需要选择一个奇数 mm,并将 aa 拆分成 mm 个子数组 b1,b2,...,bmb_1,b_2,...,b_m,使得:

  • 数组 aa 的每个元素都属于且仅属于一个子数组。
  • 拆分出来的所有子数组的长度都是奇数。
  • 所有子数组的中位数组成的数组,其中位数必须等于 kk

子数组的概念:对于 1lrn1 \le l \le r \le n,那么[al,al+1,...,ar][a_l,a_{l+1},...,a_r] 就是 aa 的子数组。

中位数的概念:在奇数长度数组中,数组按照升序排序后的中间元素即中位数,例如 [1,2,3,4,5][1,2,3,4,5] 的中位数是 33

输入

第一行包含一个整数 tt,代表测试样例的组数。 (1t50001 \le t \le 5000)

对于每组测试样例:

第一行输入两个整数 nnkk (1kn2×105)( 1 \le k \le n \le 2 \times 10^5),且保证 nn 是奇数

数据保证所有的 nn 总和不超过21052 \cdot 10^5.

输出

对于每组测试样例:

如果没有合适的分配方案,则输出 1-1

如果有,那么输出两行。

第一行输出一个奇数整数 mm,表示分出来的子数组数量。

第二行输出 mm 个整数 p1,p2,...,pmp_1,p_2,...,p_m1=p1<p2<p3<<pmn1 = p_1 < p_2 < p_3 < \ldots < p_m \le npip_i 表示第 ii 个子数组的左边界。

具体的说,对于有效答案 [p1,p2,...,pm][p_1,p_2,...,p_m],其含义为子数组的划分是:

  • $b_1 = \left[ a_{p_1}, a_{p_1 + 1}, \ldots, a_{p_2 - 1} \right]$
  • $b_2 = \left[ a_{p_2}, a_{p_2 + 1}, \ldots, a_{p_3 - 1} \right]$
  • \ldots
  • $b_m = \left[ a_{p_m}, a_{p_m + 1}, \ldots, a_n \right]$.

若有多个答案,输出任意一个满足条件的即可。

4
1 1
3 2
3 3
15 8
1
1
3
1 2 3
-1
5
1 4 7 10 13

Note

对于样例四,分区结果为:

b1=[1,2,3]b_1 = [1,2,3],中位数为 22

b2=[4,5,6]b_2 = [4,5,6],中位数为 55

b3=[7,8,9]b_3 = [7,8,9],中位数为 88

b4=[10,11,12]b_4 = [10,11,12],中位数为 1111

b5=[13,14,15]b_5 = [13,14,15],中位数为 1414

所以得到的中位数数组是 [2,5,8,11,14][2,5,8,11,14],该数组的中位数是 88,满足要求。