给定一个包含 $N$ 个节点和 $M$ 条边的有向图 $G$。每个节点编号为 $1$ 到 $N$,每条边编号为 $1$ 到 $M$。对于每条边 $i$ ($1 \le i \le M$),它从顶点 $u_i$ 指向顶点 $v_i$,并具有唯一的颜色 $c_i$。
路径(walk)定义为边序列 $e_1, e_2, \dots, e_l$,其中对于每个 $1 \le k < l$,边 $e_k$ 的终点(head)与边 $e_{k+1}$ 的起点(tail)相同。我们称路径 $e_1, e_2, \dots, e_l$ 从顶点 $u_{e_1}$ 开始,到顶点 $v_{e_l}$ 结束。注意,同一条边可以在路径中出现多次。
路径 $e_1, e_2, \dots, e_l$ 的颜色序列定义为 $c_{e_1}, c_{e_2}, \dots, c_{e_l}$。
考虑图中从顶点 $S$ 到顶点 $T$ 的所有长度不超过 $10^{100}$ 的路径的颜色序列。请编写一个程序,找出其中字典序最小的序列。
输入格式
输入的第一行包含四个空格分隔的整数 $N, M, S$ 和 $T$ ($1 \le N \le 100\,000, 0 \le M \le 300\,000, 1 \le S \le N, 1 \le T \le N, S \neq T$)。
接下来 $M$ 行,第 $j$ 行($1 \le j \le M$)包含三个空格分隔的整数 $u_i, v_i$ 和 $c_i$ ($1 \le u_i, v_i \le N, u_i \neq v_i, 1 \le c_i \le 10^9$);描述了一条从顶点 $u_i$ 指向顶点 $v_i$、颜色为 $c_i$ 的有向边。
图中不存在重边,且每条边都有唯一的颜色。形式化地,对于任意 $1 \le i < j \le M$,满足 $c_i \neq c_j$ 且 $(u_i, v_i) \neq (u_j, v_j)$。
输出格式
如果不存在从顶点 $S$ 到顶点 $T$ 的路径,输出 “IMPOSSIBLE”。(不含引号)
否则,设 $a_1, a_2, \dots, a_l$ 是所有从 $S$ 到 $T$ 且长度不超过 $10^{100}$ 的路径中,字典序最小的颜色序列。
- 如果 $l \le 10^6$,在第一行输出 $a_1, a_2, \dots, a_l$。每个整数之间应有一个空格。
- 如果 $l > 10^6$,输出 “TOO LONG”。(不含引号)
样例
样例输入 1
3 3 1 3 1 2 1 2 3 7 1 3 5
样例输出 1
1 7
样例输入 2
3 4 1 3 1 2 1 2 1 2 2 3 7 1 3 5
样例输出 2
TOO LONG
样例输入 3
2 0 2 1
样例输出 3
IMPOSSIBLE
说明
序列 $p_1, p_2, \dots, p_n$ 比另一个序列 $q_1, q_2, \dots, q_m$ 字典序更小,当且仅当满足以下条件之一:
- 存在唯一的 $j$ ($0 \le j < \min(n, m)$),使得 $p_1 = q_1, p_2 = q_2, \dots, p_j = q_j$ 且 $p_{j+1} < q_{j+1}$。
- $n < m$ 且 $p_1 = q_1, p_2 = q_2, \dots, p_n = q_n$。换句话说,$p$ 是 $q$ 的一个真前缀。