#ZF1171. 小任的早饭

小任的早饭

Description

最近小任发现自己和健康渐行渐远了,为了改善这一情况,他决定吃个早饭。

他决定吃 nn 个烧饼,他的家里有 mm 个烤箱,每个烧饼需要正反 22 面都烤过才可以食用。

每一轮,小任可以决定每个烤箱烤哪个烧饼,并且可以选择烤选定烧饼的任意一面,也可以选择不烤任何一张烧饼。每一轮每个烤箱最多只能烤一张烧饼的一面,并且不可以存在一张烧饼同时被两个烤箱烘烤的情况。在安排好每个烤箱之后,小任会同时启动所有烤箱的开关。在烘烤完成后,若还有烧饼存在至少一面没有被烤过,小任就会继续下一轮。

小任好奇他最少进行几轮可以把烧饼全部烤好,请你输出最少需要的轮数,并且输出每一轮每个烤箱的具体安排,若有多个符合条件的安排,输出任意一种。

Format

Input

本题有多组测试数据

第一行包含一个整数 tt,其中 1t100001\leq t \leq 10000,表示测试的用例个数。

接下来 tt 行每行包含两个整数 n,mn,m,其中 1n,m1051\leq n,m \leq 10^5,分别表示待烤烧饼的个数和烤箱的个数。

保证每组数据的 nn 之和与 mm 之和均不超过 10510^5

Output

一共输出 tt 组,每组按照以下格式输出答案:

第一行输出一个整数 xx 表示最小轮数。

接下来 xx 行,每行输出 mm 个整数,表示每一轮烤箱的安排情况。

设第 ii 个整数为 yy,如果 y>0y>0 表示第 ii 个烤箱在这一轮烤第 y|y| 块烧饼的正面,如果 y<0y<0 则表示烤第 y|y| 块烧饼的背面,如果 y=0y=0,则说明第 ii 个烤箱这一轮不烤任何烧饼。

其中 y|y| 表示 yy 的绝对值。

若有多个满足轮数最小的方案,输出任意一种。

Samples

1
3 7
2
1 2 3 0 0 0 0 
-1 -2 -3 0 0 0 0 

Note

第一个样例,最少需要 22 轮完成烘烤。

第一轮前三个烤箱分别烤了第 1,2,31,2,3 快烧饼的正面,

第二轮前三个烤箱分别烤了第 1,2,31,2,3 快烧饼的背面,

第二轮结束后所有烧饼都被烤完了。

Limitation

1s, 256KiB for each test case.