#CF1917D. D. 又一个逆序对问题

D. 又一个逆序对问题

D. 又一个逆序对问题

每次测试时间限制:22
每次测试内存限制:256256 兆字节

给你一个由 112n12n-1 之间的奇数构成的排列 p0,p1,,pn1p_0, p_1, \ldots, p_{n-1},以及一个由 00k1k-1 之间的整数构成的排列 q0,q1,,qk1q_0, q_1, \ldots, q_{k-1}

定义长度为 nknk 的数组 a0,a1,,ank1a_0, a_1, \ldots, a_{nk-1} 如下:
对于所有 0i<n0 \le i < n 和所有 0j<k0 \le j < k,有 aik+j=pi2qja_{i \cdot k + j} = p_i \cdot 2^{q_j}

例如,如果 p=[3,5,1]p = [3,5,1]q=[0,1]q = [0,1],那么 a=[3,6,5,10,1,2]a = [3,6,5,10,1,2]

注意,题目中所有数组都是从 00 开始索引的。注意,数组 aa 的每个元素都是唯一确定的。

求数组 aa 中的逆序对数量。由于这个数字可能非常大,你只需要输出它对 998244353998244353 取模的结果。

数组 aa 中的一个逆序对是指一对 (i,j)(i,j)0i<j<nk0 \le i < j < nk)满足 ai>aja_i > a_j

输入

第一行包含一个整数 tt1t1041 \le t \le 10^4)——测试用例的数量。
每个测试用例的第一行包含两个整数 nnkk1n,k21051 \le n, k \le 2 \cdot 10^5)——数组 ppqq 的长度。
每个测试用例的第二行包含 nn 个不同的整数 p0,p1,,pn1p_0, p_1, \ldots, p_{n-1}1pi2n11 \le p_i \le 2n-1pip_i 是奇数)——数组 pp
每个测试用例的第三行包含 kk 个不同的整数 q0,q1,,qk1q_0, q_1, \ldots, q_{k-1}0qi<k0 \le q_i < k)——数组 qq
保证所有测试用例的 nn 之和不超过 21052 \cdot 10^5,且所有测试用例的 kk 之和不超过 21052 \cdot 10^5

输出

对于每个测试用例,输出一行一个整数:数组 aa 中逆序对的数量模 998244353998244353

示例

输入

4
3 2
3 5 1
0 1
3 4
1 3 5
3 2 0 1
1 5
1
0 1 2 3 4
8 3
5 1 7 11 15 3 9 13
2 0 1

输出

9
25
0
104

注释

在第一个测试用例中,数组 aa 等于 [3,6,5,10,1,2][3,6,5,10,1,2]。其中有 99 个逆序对:(0,4)(0,4)(0,5)(0,5)(1,2)(1,2)(1,4)(1,4)(1,5)(1,5)(2,4)(2,4)(2,5)(2,5)(3,4)(3,4)(3,5)(3,5)。注意这些是 (i,j)(i,j) 对,满足 i<ji<jai>aja_i > a_j
在第二个测试用例中,数组 aa 等于 [8,4,1,2,24,12,3,6,40,20,5,10][8,4,1,2,24,12,3,6,40,20,5,10]。其中有 2525 个逆序对。
在第三个测试用例中,数组 aa 等于 [1,2,4,8,16][1,2,4,8,16]。其中没有逆序对。