曾经有一个发明家大会,来自世界各地 的发明家聚集在一起。大会组织者为每位发明家预订了恰好一间酒店房间。然而,每位发明家对于自己想住哪个房间都有自己的偏好。组织者自己也是一个聪明的发明家,他很快找到了一种公平且客观的房间分配方法:每位发明家在一枚均匀的硬币的两面各写下一个不同的房间号。然后,每位发明家抛掷自己的硬币,并被分配到硬币朝上一面的房间号。如果某个房间被分配给了多于一位发明家,所有发明家都必须重新抛掷硬币。
正如你所能想象的,这个分配过程可能会持续很长时间,甚至可能永远不会结束。然而,它的优点是,在所有可能的房间分配方案中,会以均匀分布随机选择一种分配方案。为了在现代应用这种方法,你需要编写一个程序来帮助组织者。
组织者自己也需要一间酒店房间。作为组织者,他希望获得一些优势:他可以对每个房间进行评分(评分越高越好),程序应该告诉他应该在自己的硬币上写下哪两个房间号,以最大化他最终被分配到的房间的期望评分。在给出建议之前,程序还可以获取其他发明家的选择。如果存在至少一种合法的分配方案,程序绝不能为组织者推荐两个导致无法将所有发明家分配到房间的房间号。
输入格式
输入开头第一行包含一个整数 $c$ ($1 \le c \le 200$),表示测试用例的数量。
每个测试用例的第一行包含一个整数 $n$ ($2 \le n \le 50\,000$),表示发明家和房间的数量。
接下来的 $n - 1$ 行包含 $n - 1$ 位宾客(不包括组织者)的选择。对于每位发明家,包含一行两个整数 $a$ 和 $b$ ($1 \le a < b \le n$),表示该发明家选择的两个房间号。
每个测试用例的最后一行包含 $n$ 个整数 $v_1, \dots, v_n$ ($1 \le v_i \le 1\,000\,000$),其中 $v_i$ 是组织者对房间 $i$ 的评分。
输出格式
对于每个测试用例,输出一行,包含两个不同的房间号 $a$ 和 $b$(满足 $a < b$),表示组织者应该选择的两个房间号,以最大化他被分配到的房间的期望评分。
如果有多个最优选择,通过选择最小的 $a$ 来打破僵局;若 $a$ 相同,则选择最小的 $b$。
如果组织者无论如何选择两个房间都无法实现将所有发明家分配到房间,则输出 impossible。
样例
输入样例 1
3 4 1 2 2 3 1 3 2 3 4 1 3 1 2 2 3 100 40 70 5 1 2 1 2 1 2 3 4 1 1 1 1 1
输出样例 1
1 4 1 3 impossible