EOJ Monthly 2021.10 Sponsored by TuSimple

E. 异或树

单点时限: 4.0 sec

内存限制: 1024 MB

Cuber QQ 有一棵 $n$ 个结点的有根树,树根是 $1$ 号节点,树上每个节点有一个点权 $a_{i}$。

对于树上的两个节点 $u,v (u\neq v)$, 若他们为祖先后代关系,则会产生一个新的价值,而且价值是 $value_{(u,v)} = a_v \oplus a_u$ 。

现在 Cuber QQ 想知道树上前 $k$ 大的价值。

输入格式

输入数据第一行包含两个整数 $n,k$ ($2 \le n \le 5 \times 10^{5},1 \le k \le \min(\sum_{v}dep_v - 1, 5\times 10^{5})$) 。

接下来 $n-1$ 行,每行两个整数 $u,v$,表示树上的一条边。

接下来 $n$ 行,第 $i$ 行代表 $i$ 号点的权值 $a_i$ ($1 \le a_i \le 2^{31} - 1$)。

输出格式

输出包含 $k$ 行,表示前 $k$ 大的异或值,从大到小依次输出。

样例

Input
3 2
1 2
1 3
1
2
4
Output
5
3