2039 - 魔法传送门 (magic.cpp)
描述

在一个神秘的魔法大陆上,存在着N座闪耀的城市,它们如同星辰般点缀在大地之上,分别以1,2,3,\ldots,N作为其独特的标识。

大陆的魔法师们怀着对二进制魔法的钟爱,赋予每座城市一个独特的魔法数字。第i座城市的魔法数字由神秘的数字A_i决定。根据一种古老的魔法规则,对于任意两座城市i, j(i < j),从城市i通往城市j的传送门数量由F(A_i \& A_j)决定。

现在,魔法师们希望探寻从城市1出发前往城市N的所有可能路径的数量。然而,这个数字可能会因为路径的复杂度而变得庞大。为了简化问题,你需要计算答案对 998244353 取模后的结果。

这个神秘的函数F(x)表示x的二进制表示中1的个数,例如:

- F(5)=2

- F(15)=4

- F(2)=1

- F(0)=0

符号\&代表二进制与运算,它的规则是:只有当两个数的对应位都为1时,结果才为1;否则结果为0。换言之,当某个位上的数都是1时,结果位也为1;否则结果位为0

```

  10101010

& 11110000

-----------

  10100000

```



输入

第一行输入一个正整数 T,表示数据组数。

对于每一组数据,第一行输入一个正整数 N,表示城市数。

第二行输入 N 个正整数 A_1,A_2,\ldots, A_N



输出

对于每一组数据,输出一行一个整数,表示从城市 1 到城市 N 的路径数,对 998244353 取余数之后的结果。

样例

输入

3
4
2 3 3 1
5
1 1 1 1 2
10
213672 382909 212809 216719 213980 121009 213899 220021 289002 120390

输出

4
0
12433985
提示

一共有 4 条路径:

- 1 \to 2 \to 4

- 1\to 3 \to 4

- 1\to 2 \to 3 \to 4

- 1\to 2 \to 3 \to 4

对于第二组数据,1 \sim 4 号城市都与城市 5 没有单向道路,所以路径数是 0

数据范围与约定

- 对于 20% 的数据,1\le N \le 5, 1\le A_i < 2^3

- 对于 50% 的数据,1\le N \le 1000

- 对于 100% 的数据,1\le N \le 2\times 10^5, 1\le T \le 5, 1\le A_i < 2^{30}


题目参数
时间限制 1 秒
内存限制 128 MB
提交次数 9
通过次数 3