每天,有 $N$ 名查尔姆斯(Chalmers)的学生聚集在 Kemigården 玩抓人游戏(tag)。在这个游戏中,会有一名“追逐者”(hunter)。当这个人抓到(tag)另一个人时,被抓的人就会变成新的追逐者。在玩了几局之后,你发现有些不对劲。具体来说,你注意到游戏中的追逐者突然比应有的数量多了很多。
如果每个人都遵守规则,游戏中应该始终只有恰好一名追逐者。然而,前几天游戏失控了,突然有十几个嗜血的工程系学生在追着你。
你意识到,有些学生即使自己不是追逐者,也一定在抓其他人。
现在你想找出哪些学生以这种方式作弊了。如果一个学生在明知自己不是追逐者的情况下抓了另一个学生,那么这个学生就作弊了。幸运的是,昨天你非常仔细地记录了参与游戏的人员以及谁抓了谁。在收集了这些信息之后,你现在准备写一个程序来告诉你哪些学生作弊了。
输入格式
第一行包含两个整数 $N$ 和 $M$($2 \le N \le 10^5$,$1 \le M \le 10^5$),分别表示参与游戏的学生人数以及一个学生抓另一个学生的次数。
接下来一行包含 $N$ 个用空格隔开的名字 $s_1, \dots, s_N$,表示参与游戏的学生。每个名字由 $1$ 到 $20$ 个字符组成,且仅包含字母 a-z。所有名字都是唯一的。列表中的第一个名字是游戏开始时的追逐者。
最后有 $M$ 行,每行格式为 $s_i$ tar $s_j$(其中 $s_i \neq s_j$),表示 $s_i$ 抓了 $s_j$。这些行按时间顺序指示了学生之间互相抓人的过程。由于你非常仔细地观察了游戏,你确定自己没有遗漏任何抓人记录。
输出格式
首先输出一个整数,表示作弊的学生人数。
接下来在下一行中,输出作弊学生的名字,按字典序升序排列,用空格隔开。
子任务
您的解法将在若干个测试点结合(子任务)上进行测试。要获得某个子任务的分数,您的解法必须通过该子任务中的所有测试用例。
| 子任务 | 分值 | 限制 |
|---|---|---|
| 1 | 10 | $M = 1$ |
| 2 | 15 | $N = 2$ |
| 3 | 15 | joshua 参与了游戏,且要么无人作弊,要么只有 joshua 作弊。 |
| 4 | 20 | $N \le 200$ |
| 5 | 40 | 无附加限制。 |
说明
样例 1 说明
最开始,olle 是追逐者。这意味着当 alexander 抓 joshua 时,alexander 作弊了。在此之后,olle 和 joshua 都认为自己是追逐者。由于 joshua 认为自己是追逐者,所以当他抓 alexander 时,他并没有作弊。最后,olle 抓了 joshua,在此之后 joshua 和 alexander 都认为自己是追逐者。结论是,唯一作弊的人是 alexander。
样例
输入样例 1
3 3 olle joshua alexander alexander tar joshua joshua tar alexander olle tar joshua
输出样例 1
1 alexander
输入样例 2
5 7 nils olle joshua fredrik alexander nils tar olle nils tar fredrik nils tar alexander joshua tar nils alexander tar nils fredrik tar nils olle tar nils
输出样例 2
2 joshua nils
输入样例 3
3 4 olle joshua alexander alexander tar olle joshua tar alexander olle tar joshua olle tar alexander
输出样例 3
3 alexander joshua olle
输入样例 4
4 4 anna bosse carina dagmar anna tar bosse bosse tar carina carina tar dagmar dagmar tar anna
输出样例 4
0