敌方在多个地点建立了通信前哨,这些地点可以表示为网络中的节点和边。该网络构成了一棵树——一种连通且无环的图。作为一名通信工程专家,你的任务是切断他们的通信。
每次通信都沿着树中两个节点之间的简单路径进行。你有能力选择该树的一个子图,并切断该子图中的每一个节点。如果通信路径包含一个被切断的节点,则通信被成功切断。你选择的子图必须由原树的节点和边的子集组成,且必须是连通的,这意味着它本身也是一棵树。
通信网络包含 $n$ 个节点,编号从 $1$ 到 $n$。你的任务是回答 $q$ 个独立的询问。对于每个询问,给定两个节点 $u_i$ 和 $v_i$,你需要确定有多少种不同的子图可以被选择来切断这两个节点之间的通信。由于结果可能非常大,请输出结果对 $998244353$ 取模后的值。$u_i = v_i$ 的情况是可能的,这表示节点内部的通信,你也可以通过选择包含该节点的子图来切断它。
输入格式
第一行包含一个整数 $T$ ($1 \le T \le 10^4$),表示测试用例的数量。
每个测试用例的第一行包含两个整数 $n$ ($2 \le n \le 10^5$) 和 $q$ ($1 \le q \le 10^5$),分别表示节点数量和询问数量。
第二行包含 $n - 1$ 个整数 $p_2, p_3, \dots, p_n$ ($1 \le p_i < i$),表示节点 $i$ 和 $p_i$ 之间有一条边相连。
接下来的 $q$ 行,每行包含两个整数 $u_i, v_i$ ($1 \le u_i, v_i \le n$),表示第 $i$ 个询问。
保证所有测试用例中 $n$ 的总和与 $q$ 的总和分别不超过 $3 \cdot 10^5$。
输出格式
对于每个测试用例,输出 $q$ 行,每行包含一个询问的结果,对 $998244353$ 取模。
样例
样例输入 1
2 3 2 1 1 2 3 1 2 5 3 1 1 2 2 4 5 2 4 2 3
样例输出 1
6 5 14 13 15
说明
在样例的第一个测试用例中,总共可以选择 6 个连通子图。对于第一个询问,所有这些子图都可以切断通信。对于第二个询问,其中 5 个可以切断通信;唯一的例外是仅由节点 3 组成的子图。