在一个高山峡谷中,有 $N$ 个村庄(编号为 $1 \dots N$),它们之间由 $N-1$ 条道路连接。虽然从任意一个村庄出发都能到达其他任何村庄,但这可能需要花费相当长的时间。如果你需要购买基本生活物资,这会变得特别麻烦,因为 $N$ 个村庄中只有 $S$ 个村庄有商店。
今年冬天,由于大雪,情况变得更加糟糕。因此,建议要么离开峡谷,即到达连接峡谷与外界的山口所在的唯一村庄 $E$,要么至少购买未来几个月所需的充足物资。今天早上你从广播中得知,大雪导致 $N-1$ 条道路中的某一条无法通行——然而,你无法清楚地听出是哪一条。
你现在想知道你和你的朋友们是否还能离开峡谷,如果不能,你们每个人至少需要行驶多远才能到达一个有商店的村庄。由于你还不确定哪条道路被封锁,且你的朋友们住在峡谷各处的不同村庄,你需要编写一个程序,针对给定的 $Q$ 组“村庄与被封锁道路”的组合来回答这个问题。
输入格式
第一行包含整数 $N, S, Q$ 和 $E$,其中 $N$ 是村庄数量,$S$ ($1 \le S \le N$) 是商店数量,$Q$ 是询问次数,$E$ ($1 \le E \le N$) 是你为了离开峡谷必须到达的村庄。
接下来的 $N-1$ 行,每行包含三个整数 $A, B$ 和 $W$。这意味着有一条长度为 $W$ ($1 \le W \le 10^9$) 的道路连接村庄 $A$ 和 $B$ ($1 \le A \le N, 1 \le B \le N$)。
随后有 $S$ 行,每行包含一个整数 $C$,表示村庄 $C$ ($1 \le C \le N$) 有一家商店。注意,这些行中的所有村庄编号各不相同,即一个村庄内不会有多于一家商店。
最后有 $Q$ 行,每行包含两个整数 $I$ 和 $R$,表示输入中第 $I$ 条道路(按输入顺序编号,$1 \le I < N$)不再可用,你想知道住在村庄 $R$ ($1 \le R \le N$) 的朋友是否还能离开峡谷;如果不能,距离最近的有商店的村庄有多远。
输出格式
输出应包含 $Q$ 行。第 $i$ 行应包含对输入中第 $i$ 个询问的回答。更准确地说,如果能够离开峡谷,该行应包含字符串 “escaped”(不含引号);如果不能,则应包含到最近的有商店的村庄的距离,或者如果已经无法到达任何商店,则输出字符串 “oo”。
右图描绘了道路变得不可用之前的情况。有商店的村庄以灰色阴影显示。道路标注为“索引 / 长度”。离开峡谷的出口位于村庄 1。
样例
样例输入 1
5 2 3 1 1 2 3 1 3 2 3 4 1 3 5 2 2 4 2 2 2 5 4 5
样例输出 1
escaped 3 oo
样例输入 2
10 2 5 4 7 2 3 4 8 3 9 10 1 6 7 3 9 2 3 10 1 2 8 2 2 5 2 1 3 8 2 8 7 2 1 1 5 8 4 6 2 7 7
样例输出 2
8 escaped escaped escaped 0
子任务
测试组满足以下条件:
- (9 分) $1 \le N \le 100, 1 \le Q \le 10\,000$,且当且仅当 $|A - B| = 1$ 时,村庄 $A$ 和 $B$ 之间有道路。
- (27 分) $1 \le N \le 1\,000, 1 \le Q \le 1\,000$。
- (23 分) $1 \le N \le 100\,000, 1 \le Q \le 100\,000$,且 $S = N$。
- (41 分) $1 \le N \le 100\,000, 1 \le Q \le 100\,000$。