你身处一个图书馆中,馆内装有可在轨道上移动的书架。有许多条平行的轨道,也就是说,书架被排列在若干行中,如图所示:
图书馆中的书架。此时没有通往图书管理员的通道。
为了借书,你必须找到图书管理员,他似乎躲在书架的另一侧。你的任务是沿轨道移动书架,从而形成一条通道。每个书架都有一个整数宽度,并且可以安全地放置在轨道上的任何整数坐标处。(书架在非整数位置无法固定,可能会意外地向任一方向滑动)。单行中的书架不需要紧挨着——两个相邻书架之间可以有任意(但为整数)的空隙。如果在任何一行的区间 $(k, k + 1)$ 内都没有书架,则在位置 $k$ 处形成了一条通道(出于某种原因,你不想在这个迷宫中尝试寻找更复杂的通路)。
在图书馆中形成的通道:位置 8(左图)和位置 9(右图)。两者都是通过移动带箭头的书架以代价 3 达到的。
移动一个书架需要你付出一定的体力:向任一方向移动它的代价均为 $1$。这个代价与移动的距离无关,这可以用一个众所周知的事实来解释:静摩擦力明显高于动摩擦力。不过,你是来借书的,而不是来健身的,所以你希望以尽可能小的代价在任意位置形成一条通道。
输入格式
输入包含多个测试用例。输入的第一行包含一个正整数 $Z \le 15$,表示测试用例的数量。接下来是 $Z$ 个测试用例。
每个测试用例的第一行包含两个空格分隔的整数 $R$ 和 $L$($1 \le R, 1 \le L \le 10^6$),分别表示行数和每行的宽度。接下来有 $R$ 行,表示每行的描述。每行以一个整数 $n_i$ 开始,后跟 $n_i$ 个整数 $a_{i,1}, a_{i,2}, \dots, a_{i,n_i}$,全部由单个空格分隔。数字 $a_{i,j}$ 表示一个书架的宽度(当 $a_{i,j} > 0$ 时),或者表示一个单位的空隙(当 $a_{i,j} = 0$ 时)。注意,对于任意行 $i$,$\sum_j a_{i,j}$ 等于 $L$ 减去 $a_{i,j}$ 中等于 $0$ 的个数。你可以认为 $n_1 + n_2 + \dots + n_R \le 2 \times 10^7$。此外,每行的描述中至少会有一个 $0$,这意味着总是可以创建一条通道。
输出格式
对于每个测试用例,输出应符合以下格式:
第一行输出通过书架形成通道的最小代价。 第二行按升序输出所有可以以最小代价形成通道的位置。
样例
样例输入 1
1 4 10 8 1 2 1 0 1 2 0 1 7 2 2 2 1 0 1 0 6 1 3 2 0 2 1 7 2 1 2 0 2 1 0
样例输出 1
3 8 9