#P2175. 小Z的游戏分队

小Z的游戏分队

题目描述

小 Z 受不了寂寞,准备举办一次 DOTA 比赛,为了能让 ACM 班全部都参加比赛,他还特制了一张 DOTA 地图能够支持任意多人打任意多人。

现在问题来了,怎么把这么多人分成两队?小 Z 的想法是,每个人报上自己愿意同队的同学,接着小 Z 会按如下要求将所有人分为两队:

对任意同学甲,和同学甲同队的人,必须都是同学甲愿意同队的同学。

小 Z 希望两队的人数差尽量小,如果这种分组不存在,那么输出 No solution

输入格式

11 行为 NN,表示一共有多少个学生。

之后 22N+1N+1 行,每行表示这个学生信任的同学的名单,以 00 结束。

输出格式

11 行,如果解存在,输出两队的人数,将人数比较小的那队放在前面;如果解不存在,输出 No solution

5
3 4 5 0
1 3 5 0
2 1 4 5 0
2 3 5 0
1 2 3 4 0
No solution
5
2 3 5 0
1 4 5 3 0
1 2 5 0
1 2 3 0
4 3 2 1 0
2 3

提示

对于 30%30\% 的数据,N10N \leq 10

对于 100%100\% 的数据,N2000N \leq 2000