一位疯狂的术士利用科谢(Koschei)的力量,复活了一位著名的俄罗斯数学家,将其变成了一名不死巫妖。这位数学家是概率论(特别是随机过程)方面的专家,他利用自己的专业知识优化了术士私人军队的行动,使他们能够暴力夺取国家的控制权。
你是反抗军的一员,你们宣誓要推翻这位术士军阀,恢复国家的自由。如果你能摧毁存放巫妖灵魂的护命匣,那么这位数学家将再次变回凡人。随着他的首席后勤官的死亡,你预计术士的政权将会瓦解,你的国家将再次获得解放。这就是:逃离马尔可夫(Escape from Markov)。
全国共有 $n$ 座城市,编号为 $1$ 到 $n$。这些城市由 $m$ 条双向道路连接。沿任意方向穿过这些道路中的任何一条总是恰好需要 $1$ 小时。没有道路连接城市自身,且任意两座城市之间最多只有一条道路。城市间的旅行只能通过这些道路进行,并且仅使用这些道路即可从任意城市到达其他任何城市。你目前位于城市 $a$。你需要尽快到达城市 $b$,因为你知道马尔可夫的灵魂就存放在那里。
不幸的是,术士有 $p$ 辆巡逻车(正式名称为“叛乱分子抓捕警车”),它们负责监控道路。每辆巡逻车都有自己的巡逻计划,图论学家会将其描述为一个闭合回路。
每辆巡逻车都有一个包含 $l$ 座城市的访问列表,按顺序访问;当它们访问完第 $l$ 座城市后,会返回起始城市,然后重新开始巡逻。目前,每辆巡逻车都位于其列表中的第一座城市。
每个计划中任意两座连续的城市(包括第 $l$ 座和第一座城市)都由一条道路直接连接。这是因为巡逻车也只能通过与你相同的道路在城市间穿行。注意,巡逻车在其巡逻计划中可能会多次访问相同的城市或道路。它们穿过每条道路(无论方向如何)也都需要恰好 $1$ 小时。
当巡逻车离开城市并在某条道路上行驶时,该道路将变得无法通行。如果你试图在任何巡逻车位于该道路上(无论你或车辆朝哪个方向行驶)时穿过该道路,你就会被抓住,反抗行动也将失败。但是,你可以在任何城市无限期地等待和躲藏,而不会被抓住(即使此时有巡逻队经过你所在的城市)。
在这些条件下,求出你从城市 $a$ 到城市 $b$ 所需的最短时间(以小时为单位),或者报告该任务是否无法完成。
输入格式
第一行包含四个由空格分隔的整数 $n, m, p, l$。
接下来 $m$ 行,每行包含两个由空格分隔的整数 $u$ 和 $v$,表示存在一条连接城市 $u$ 和 $v$ 的双向道路。没有道路连接城市自身,且任意两座城市之间最多只有一条道路。
接下来 $p$ 行,每行对应一辆巡逻车的巡逻计划。每行包含 $l$ 个由空格分隔的整数。第一个整数是巡逻车的起始城市,后续序列描述了巡逻车按顺序访问的城市。回想一下,在访问完计划中的第 $l$ 座城市后,巡逻车会返回第一座城市并重新开始巡逻。
最后一行包含两个由空格分隔的整数 $a$ 和 $b$。
数据范围
- $2 \le n \le 2 \cdot 10^5$
- $n - 1 \le m \le 2 \cdot 10^5$
- $1 \le p \le 2 \cdot 10^5$
- $2 \le l \le 2 \cdot 10^5$
- $p \cdot l \le 10^6$
- 仅使用道路即可从任意城市到达其他任何城市。
- 巡逻计划中任意两座连续城市之间都存在一条道路。
- $a \neq b$
- 输入中的所有城市编号均在 $1$ 到 $n$ 之间(含边界)。
输出格式
输出一个整数,表示你从城市 $a$ 到城市 $b$ 所需的最短时间(以小时为单位),如果任务无法完成,则输出 IMPOSSIBLE。
样例
样例输入 1
4 4 1 4 1 2 2 3 3 4 4 1 2 1 4 3 1 3
样例输出 1
2
样例输入 2
4 4 1 4 1 2 2 3 3 4 4 1 2 1 4 3 1 2
样例输出 2
2
样例输入 3
6 5 1 4 1 2 2 3 3 4 4 5 5 6 5 6 5 4 1 6
样例输出 3
7
样例输入 4
2 1 1 2 1 2 2 1 1 2
样例输出 4
IMPOSSIBLE
说明
对于第一个样例输入,我们从城市 1 出发。注意,在第一个小时内,有一辆巡逻车正从城市 2 开往城市 1,所以我们不能往那个方向走。我们可以通过从城市 1 到 4,再从城市 4 到 3 来避开巡逻车,总共花费 2 小时。
对于第二个样例输入,我们本想直接前往城市 2,但有一辆巡逻车在第一个小时内监控着城市 1 和 2 之间的道路。因此,我们在城市 1 等待了 1 小时。一小时过去且巡逻车离开后,我们直接从城市 1 前往城市 2。总共花费了 2 小时。