你的朋友 Pedro 总是对集体活动感到非常兴奋。在兴奋之余,他总是跑得太快,以至于在到达集合点之前就累了。有一天,你决定收集关于这一现象的数据,令人惊讶的是,你发现他总是恰好在路线的中点感到疲倦。换句话说,当他走完计划行程的一半距离时,他就会感到疲倦。
你们的城市有 $N$ 个路口(用 $1$ 到 $N$ 的不同整数标识)和 $M$ 条双向道路。每条道路都有一定的长度,并连接一对特定的路口,使得城市中任意一对路口之间都存在一条路径。两个路口之间的距离是它们之间最短路径的长度。
Pedro 住在路口 $P$,而你们的朋友圈决定今天晚些时候在路口 $G$ 集合。经过一番思考,你设计了以下计划以确保 Pedro 准时到达。你将告诉他一个误导性的集合点,使得他恰好在 $G$ 处感到疲倦。为了让这个计划可行,路口 $G$ 必须属于 Pedro 从 $P$ 前往该误导性集合点时可能选择的每一条路径,并且对于每一条这样的路径,Pedro 必须恰好在 $G$ 处感到疲倦。幸运的是,你深知 Pedro 是一位优秀的规划者,绝不会选择比需要更长的路径。
现在你想知道,哪些路口可以作为这个误导性的集合点?
输入格式
第一行包含两个整数 $N$($2 \le N \le 10^5$)和 $M$($1 \le M \le 10^5$),分别表示城市中的路口数量和道路数量。每个路口由 $1$ 到 $N$ 之间的一个唯一整数标识。
第二行包含两个整数 $P$ 和 $G$($1 \le P, G \le N$ 且 $P \neq G$),分别表示 Pedro 居住的路口和正确的集合点。
接下来的 $M$ 行,每行包含三个整数 $U$、$V$ 和 $D$($1 \le U, V \le N$,$U \neq V$ 且 $1 \le D \le 10^9$),表示路口 $U$ 和 $V$ 之间有一条长度为 $D$ 的双向道路。
保证使用给定的道路,每对路口之间都存在一条路径,且任意两个路口之间最多只有一条道路。
输出格式
输出单行,包含一个升序排列的整数列表,表示可以作为计划中误导性集合点的路口。如果没有路口可行,则输出字符 *(星号)。
样例
输入样例 1
4 5 1 3 1 3 1 2 1 3 2 4 3 4 3 1 3 2 1
输出样例 1
2 4
输入样例 2
4 5 1 3 1 3 1 2 1 2 2 4 3 4 3 1 3 2 1
输出样例 2
4
输入样例 3
3 2 1 2 1 2 100000 2 3 99999
输出样例 3
*
输入样例 4
4 4 4 3 3 4 1 4 1 1 1 2 1 2 3 1
输出样例 4
*