#CF1948E. 团划分

    ID: 6577 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>贪心模拟其他构造搜索枚举图结构*2100

团划分

E. 团划分

单个测试点时间限制33单个测试点内存限制512512 兆字节

给定两个整数 nnkk。有一张包含 nn 个结点的图,结点编号为 11nn,初始时没有边

你需要给每个结点分配一个整数,设结点 ii 上的数为 aia_i。 所有 aia_i 必须是 11nn 之间互不相同的整数。

分配完数值后,对于每一对结点 (i,j)(i,j),如果满足

ij+aiajk|i-j|+|a_i-a_j|\le k

就在它们之间连一条边。

你的目标是构造出这样的数组 aa,使得这张图可以被划分为最少可能的团。每个结点必须恰好属于一个团。 回顾团的定义:一个结点集合中,任意两个结点之间都有边相连

由于出题人不会求解“给定图,求最小团划分”,我们也要求你输出划分方案。


输入格式

第一行包含一个整数 tt1t16001\le t\le 1600),表示测试用例数量。

每个测试用例一行,包含两个整数 nnkk2n402\le n\le 401k2n1\le k\le 2n)。


输出格式

对每个测试用例输出三行:

  1. 第一行输出 nn 个互不相同的整数 a1,a2,,ana_1,a_2,\dots,a_n1ain1\le a_i\le n);
  2. 第二行输出一个整数 qq1qn1\le q\le n),表示团的数量;
  3. 第三行输出 nn 个整数 c1,c2,,cnc_1,c_2,\dots,c_n1ciq1\le c_i\le q),表示每个结点所在的团编号。

如果有多种答案,输出任意一种即可。


样例输入

3
2 3
5 4
8 16

样例输出

2 1
1
1 1
3 1 5 2 4
2
1 1 2 1 2
1 2 3 4 5 6 7 8
1
1 1 1 1 1 1 1 1