定义一个长度为$$$n$$$的数组 $$$a_1,a_2,\cdots,a_n$$$ 是好数组当且仅当 $$$\forall{i}\in[1,n),~a_1~|~a_2|~\cdots~|a_i~=~a_{i+1}~|~\cdots~|~a_n$$$。其中$$$|$$$表示按位或运算。
小文有一个长度为$$$n$$$的数组 $$$a_1,a_2,\cdots,a_n$$$,他想知道有多少个不同的$$$1$$$到$$$n$$$的排列 $$$p_1,p_2,\cdots,p_n$$$,使得 $$$a_{p_1},a_{p_2},\cdots,a_{p_n}$$$ 是一个好数组。
满足条件的排列数量可能会很大,你只需要输出其对 $$$998244353$$$ 取模后的结果即可。
第一行输入一个整数 $$$t~(1\leq{t}\leq{10^5})$$$ 表示有$$$t$$$组样例。
每一个样例的第一行输入一个整数$$$n~(2\leq{n}\leq{2\cdot{10^5}})$$$。
每一个样例的第二行输入$$$n$$$个整数 $$$a_1,a_2,\cdots,~a_n(1\leq{a_i} \lt 2^{30})$$$。
数据保证所有样例的$$$n$$$之和不超过 $$$2\cdot{10^5}$$$。
对于每个样例输出一个整数,即满足条件的排列数对 $$$998244353$$$ 取模后的结果。
4 2 1 1 3 1 2 3 5 1 3 2 2 3 4 1000000000 5454135 1000000000 9985453
2 0 12 0
| Name |
|---|


