给定两个整数数组 $A$ 和 $B$,请确定 $A$ 中非空位置子集的数量,使得这些位置在 $A$ 中对应值的异或和(XOR Sum)不包含 $B$ 中的任何子掩码。更正式地说,如果所选 $A$ 中位置子集的异或和为 $S$,且 $S$ 的所有子掩码集合为 $\{m_1, m_2, \dots, m_k\}$,则对于所有 $1 \le i \le k$,满足 $m_i \notin B$。
由于有效的非空子集数量可能非常大,你需要输出结果对 $1,000,000,007$ ($10^9 + 7$) 取模后的值。
位置子集 $\{p_1, p_2, \dots, p_k\}$ 的异或和定义为:$S = A[p_1] \oplus A[p_2] \oplus \dots \oplus A[p_k]$,其中 $\oplus$ 表示按位异或运算符。
数字 $n$ 的子掩码是指所有在 $m$ 中置位的位在 $n$ 中也置位的任何数字 $m$。
输入格式
输入包含多个测试用例。第一行包含一个整数 $T$ ($1 \le T \le 100$),表示测试用例的数量。每个测试用例格式如下:
- 第一行包含两个正整数 $N$ ($1 \le N \le 10^5$) 和 $K$ ($1 \le K \le 10$),分别表示数组 $A$ 和 $B$ 的长度。
- 第二行包含 $N$ 个空格分隔的整数 $a_1, a_2, \dots, a_n$ ($0 \le a_i \le 2^{31} - 1$)。
- 第三行包含 $K$ 个空格分隔的整数 $b_1, b_2, \dots, b_k$ ($0 \le b_i \le 2^{31} - 1$)。
你可以认为所有测试用例的 $N$ 之和不超过 $10^5$。
输出格式
对于每个测试用例,输出一行,包含答案对 $1,000,000,007$ ($10^9 + 7$) 取模后的结果。
样例
输入 1
3 1 1 1 1 2 1 1 2 4 2 1 1 3 1
输出 1
0 3 1