#CF2071C. C. 特拉普米贾诺·雷贾诺(陷阱奶酪)

C. 特拉普米贾诺·雷贾诺(陷阱奶酪)

C. 特拉普米贾诺·雷贾诺(陷阱奶酪)

每个测试的时间限制22
每个测试的内存限制256256 MB


在意大利的一个村庄里,一只饥饿的老鼠从一棵给定树∗的顶点 stst 出发。树有 nn 个顶点。

给定一个长度为 nn 的排列 pp†,一共进行 nn 步。第 ii 步的过程如下:

  • 一块诱人的帕尔马干酪出现在顶点 pip_i
  • 如果老鼠当前正好在顶点 pip_i,它会停留在原地享受奶酪。
  • 否则,它会沿着前往顶点 pip_i 的简单路径向 pip_i 移动一条边。

你的任务是找到一个排列,使得经过全部 nn 步后,老鼠必定到达顶点 enen,而陷阱正设在那里。

注意:老鼠必须在全部 nn 步结束后到达 enen,但它可以在过程中提前经过 enen


∗ 树是一个没有环的连通图。

† 长度为 nn 的排列是一个由 nn 个不同的整数 11nn 组成的数组,顺序任意。
例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是排列(22 出现了两次),[1,3,4][1,3,4] 也不是排列(n=3n=3 但数组中出现了 44)。


输入格式

每个测试包含多个测试用例。
第一行包含测试用例的数量 tt1t1041 \le t \le 10^4)。

每个测试用例的描述如下:

  • 第一行包含三个整数 n,st,enn, st, en1n1051 \le n \le 10^51st,enn1 \le st, en \le n)—— 树的顶点数、老鼠的起点、陷阱所在顶点。
  • 接下来的 n1n-1 行,每行包含两个整数 uuvv1u,vn1 \le u, v \le nuvu \ne v)—— 表示树中连接顶点 uuvv 的一条边。

保证这些边构成一棵树。
保证所有测试用例的 nn 之和不超过 10510^5


输出格式

对于每个测试用例:

  • 如果不存在这样的排列,输出 1-1
  • 否则,输出 nn 个整数 p1,p2,,pnp_1, p_2, \dots, p_n,表示奶酪出现在各顶点的顺序,确保老鼠最终会在顶点 enen 被抓住。
    如果存在多个解,输出任意一个。

示例

输入

4
1 1 1
2 1 2
1 2
3 2 2
1 2
2 3
6 1 4
1 2
1 3
4 5
5 6
1 4

输出

1 
1 2 
3 1 2 
1 4 3 2 6 5 

说明

  • 在第一个测试用例中,长度为 n=1n=1 时只有一个排列 p=[1]p=[1],它成功抓住了老鼠:
    st=1p1=11=enst = 1 \xrightarrow{p_1 = 1} 1 = en

  • 在第二个测试用例中,一个可能的长度为 n=2n=2 的排列是 p=[1,2]p=[1,2]
    $st = 1 \xrightarrow{p_1 = 1} 1 \xrightarrow{p_2 = 2} 2 = en$。

  • 在第三个测试用例中,一个可能的长度为 n=3n=3 的排列是 p=[3,1,2]p=[3,1,2]
    $st = 2 \xrightarrow{p_1 = 3} 3 \xrightarrow{p_2 = 1} 2 \xrightarrow{p_3 = 2} 2 = en$。