夏洛克·福尔摩斯(Sherlock Holmes)是一位著名的侦探。他在苏格兰场的同事们经常向他提供一系列证据,并请求他协助破解谜案。经过多年的实践,福尔摩斯积累了极其丰富的经验,已经掌握了许多常见事件的起因。结合他非凡的演绎推理能力,这使他能够坐在舒适的椅子上,在几分钟内解决案件。
福尔摩斯的知识库可以建模为一组形如 $A \to B$ 的蕴含关系(其中 $A$ 和 $B$ 代表事件),这意味着如果 $A$ 发生,事件 $B$ 也必然发生(请记住,只有当 $A$ 为真且 $B$ 为假时,逻辑蕴含才为假)。当然,蕴含关系可以形成推理链,例如 $A \to B \to C$。然而,蕴含关系中永远不会出现环状链(例如 $A \to B \to C \to \dots \to A$)。
福尔摩斯得到了一个已知发生事件的集合 $S = \{S_1, S_2, S_3, \dots, S_N\}$(即证据)。然后,他可以利用自己广泛的知识和演绎推理能力,找出所有必然发生的事件。
需要特别注意的是,福尔摩斯的知识量极其庞大,以至于他知道所有可能的事件起因。换句话说,不存在任何一条在现实中成立、却未包含在福尔摩斯知识库中的蕴含关系。
许多侦探机构都非常欣赏福尔摩斯这种独一无二的能力,因此你的任务是用计算机完成普通人无法企及的工作。编写一个程序,根据给定的蕴含关系和侦探同事收集的证据,找出所有必然发生的事件。
输入格式
输入的第一行包含三个整数 $D$($1 \le D \le 1000$),表示不同事件类型的数量;$M$($1 \le M \le 100000$),表示蕴含关系的条数;以及 $N$($1 \le N \le D$),表示侦探收集到的证据数量。
接下来的 $M$ 行,每行包含两个整数 $A$ 和 $B$($1 \le A, B \le D$),描述一条蕴含关系 $A \to B$。
最后的 $N$ 行,每行包含一个整数 $X$($1 \le X \le D$),描述根据侦探收集的证据,一个必然已经发生的事件。
输出格式
输出的第一行也是唯一的一行,应包含若干个整数(以任意顺序排列),表示所有必然已经发生的事件。
样例
输入 1
3 2 1 1 2 2 3 2
输出 1
1 2 3
输入 2
3 2 1 1 3 2 3 3
输出 2
3
说明 2
知识库中包含蕴含关系 $1 \to 3$ 和 $2 \to 3$。因此,福尔摩斯知道事件 3 只能由事件 1 和 2 引起,但(在没有任何额外信息的情况下)他无法确定这两个事件中究竟是哪一个实际引起了 3。因此,唯一必然发生的事件就是输入中给出的那个事件。
输入 3
4 4 1 1 2 1 3 2 4 3 4 4
输出 3
1 2 3 4
说明 3
福尔摩斯不知道集合 $\{2, 3\}$ 中的哪一个事件直接导致了事件 4。然而,由于这两个事件都只能由事件 1 引起,福尔摩斯可以推断出事件 1 必然已经发生。因此,事件 2、3 和 4(由侦探给出)也必然已经发生。