#P10007. 树异或价值

树异或价值

树异或价值

Problem Description

曾经有一棵 nn 个节点的有根树,其根节点的编号为 11。同时,小 ω\omega 有一个大小为 nn 的数组 a1,a2,,ana_1,a_2,\ldots,a_n 。 定义数组 aa 的价值为:

$$\sum_{i=1}^n \sum_{j=1}^n (a_i \oplus a_j) \times dep_{\mathrm{LCA}(i,j)} $$

相关定义解释:

  • \oplus 表示按位异或。
  • depxdep_x 表示 xx 的深度,即 xx 到根节点的路径上节点的数量。
  • LCA(i,j)\mathrm{LCA(i,j)} 表示 iijj 的最近公共祖先。 不幸的是,很多年之后小 ω\omega 忘记了数组 aa。但是他记得:
  • 1in\forall 1 \le i \le n, 0ai2k10 \le a_i \le 2^k - 1,其中 kk 是一个给定的常数。
  • 在所有 2kn2^{kn} 种可能的 aa 数组中,小 ω\omegaaa 数组的价值是最大的。 小 ω\omega 并不满足于找到一个合法的 aa 数组,他更想知道有多少种 aa 数组能满足上述条件。答案可能很大,请输出其对 998244353998244353 取模的结果。

Input

输入包含多组测试数据。 第一行包含一个整数 TT (1T201 \le T \le 20),表示测试数据的组数。 对于每组测试数据, 第一行包含两个整数 nn, kk (1n2×105,1k1091 \le n \le 2 \times 10^5, 1 \le k \le 10^9),表示树与 aa 数组的大小,aa 数组元素的上界。 第二行包含 n1n-1 个整数 p2,p3,,pnp_2,p_3,\ldots,p_n (1pi<i1 \le p_i < i), 其中 pip_i 表示树上节点 ii 的父亲。

Output

对于每组测试数据,输出一行一个整数,表示合法 aa 数组数量对 998244353998244353 取模的结果。

Sample Input

1
3 3
1 1

Sample Output

216

Source

2024“钉耙编程”中国大学生算法设计超级联赛(9)