有 $N$ 名工人和 $M$ 项不同的工作。给定一个矩阵 $A$,其中 $A_{i,j} = 1$ 表示第 $i$ 名工人有资格完成第 $j$ 项工作,$A_{i,j} = 0$ 则表示没有资格。只有当工人有资格完成某项工作时,才能将该工作分配给他。
你的目标是分配工作,使得工人们完成的工作量分布尽可能均匀(在欧几里得度量下)。这意味着,由第 $i$ 名工人完成的工作量组成的 $N$ 维向量,应尽可能接近每个元素都等于实数 $M/N$ 的 $N$ 维向量。
附加要求是,每一项能够被完成的工作都必须恰好分配给一名工人。
输入格式
第一行包含两个整数 $N$ 和 $M$ ($1 \le N, M \le 300$)。接下来有 $N$ 行,每行包含 $M$ 个字符。每个字符要么是 '0',要么是 '1'。这些行表示矩阵 $A$。
输出格式
输出 $N$ 行。在第 $i$ 行,首先输出 $k_i$,即分配给第 $i$ 名工人的工作数量。随后输出这些工作的编号。如果存在多种分配方式能达到最优分布,输出其中任意一种即可。
样例
输入 1
3 3 111 111 111
输出 1
1 1 1 2 1 3
输入 2
2 4 0100 1100
输出 2
1 2 1 1
说明
两个向量 $(u_1, u_2, \dots, u_N)$ 和 $(v_1, v_2, \dots, v_N)$ 之间的欧几里得距离是实数 $$\sqrt{(v_1 - u_1)^2 + (v_2 - u_2)^2 + \dots + (v_N - u_N)^2}$$