#P3961. Cactus Revolution

Cactus Revolution

题目描述

在全球核战争后,先进洞穴大都市(ACM)在地下洞穴中幸存下来。洞穴之间通过通道相连,整个城市地图可以用一个图来表示,其中洞穴是顶点,它们之间的通道是边。

洞穴城市发生了一场革命。城市的全体居民被平均分成kk个政党,这些政党无法就共同的法律达成一致。他们决定将城市划分为kk个行政区,并让每个行政区的居民自行制定他们喜欢的法律。

你将得到一个以图形式呈现的城市地图,你的任务是编写一个程序,将这个图划分为kk个大小相等的行政区。每个行政区必须形成一个连通子图,由图的顶点子集表示。

幸运的是,图中的顶点数量能被kk整除,并且表示城市的图恰好是一个仙人掌图——一种每个边最多属于一个简单环的连通无向图。直观地说,仙人掌图是树的一种推广,其中允许存在一些环。

下面的图片展示了一个有15个洞穴的城市地图及其划分为3个行政区的示例。

输入

输入文件的第一行包含三个整数nnmmkk1n500001 \leq n \leq 50\,0000m100000 \leq m \leq 10\,0001kn1 \leq k \leq n)。这里nn是图中的顶点数量,顶点编号从1到nn。图的边由一组边不相交的路径表示,其中mm是这种路径的数量,kk是城市必须划分的行政区数量,且nn能被kk整除。

接下来的mm行每行包含图中的一条路径。一条路径以一个整数sis_i2si10002 \leq s_i \leq 1000)开头,后跟sis_i个从1到nn的整数。这sis_i个整数表示路径的顶点。

路径中相邻的顶点是不同的。路径可以多次经过同一个顶点,但在整个输入文件中,每条边恰好被遍历一次。图中没有重边(任意两个顶点之间最多有一条边)。

输入文件中的图是一个仙人掌图。

输出

如果可以将顶点划分为kk个行政区,则向输出文件写入kk行,每行包含n/kn/k个整数。每行表示一个行政区,作为构成它的顶点编号列表。

在每个行政区的描述中,顶点编号必须按升序列出。

如果不存在解决方案,则输出单个数字-1。

输入数据 1


#1
15 3 3
9 1 2 3 4 5 6 7 8 3
7 2 9 10 11 12 13 10
5 2 14 9 15 10


#2
4 2 2
3 1 2 3
2 2 4

输出数据 1


#1
4 5 6 7 8
10 11 12 13 15
1 2 3 9 14


#2
-1