logo AlgoBeat OnlineJudge
登录 注册

#216036. [PA 2026] 多重桥牌 / Multi-brydż

内存限制:1024 MiB 时间限制:1000 ms 标准输入输出
题目类型:VJudge(洛谷) 评测方式:VJudge
上传者: 匿名

题目描述

在多重桥牌游戏中,两支队伍(我们称之为"磕绊者"和"算法师")各由 名玩家组成。 玩家围坐于一张圆桌旁,位置编号为 。奇数位置坐的是磕绊者,偶数位置坐的是算法师。游戏使用 张牌,牌面值为 。 每位玩家在游戏开始时持有其中两张牌。每位玩家均知道其余所有玩家手中的牌。

游戏由两局组成。在第一局中,位于随机位置 的玩家首先出牌,将其两张牌中的一张打出。 随后,位置依次为 的玩家依次出牌(各打出两张牌中的一张)。打出牌面值最高的牌的玩家所在队伍得一分。在第二局中,所有玩家打出各自剩余的那张牌。再次地,打出牌面值最高的牌的玩家所在队伍得一分。

输入将给出一个由 个整数组成的序列 ,用于描述游戏结果与首位出牌玩家的对应关系,具体而言:对于 ,若位于位置 的玩家首先出牌,且所有玩家均采取最优策略,则算法师队伍恰好得 分。

请求出与上述结果序列相符的不同发牌方案数,并输出该数除以 的余数。若对于某个位置 和某个牌面值 ,位于位置 的玩家在其中一种方案中持有牌面值为 的牌,而在另一种方案中不持有,则称这两种方案不同。

你需要对 个相互独立的测试用例求解此问题。

输入格式

输入的第一行包含一个整数 ),表示测试用例的数量。

每个测试用例描述的第一行包含一个整数 ),表示每支队伍中的玩家人数。

第二行包含 个整数组成的序列 ); 的值表示当位于位置 的玩家首先出牌时,算法师队伍所得的分数。

所有测试用例的 之和不超过

输出格式

输出应包含 行。第 行应包含一个整数,表示与第 个测试用例中给定结果序列相符的发牌方案数除以 的余数。

样例

样例输入 1

4
2
1 0 1 0
1
0 2
3
1 0 0 1 1 0
7
1 1 1 1 1 1 1 1 1 1 1 1 1 1

样例输出 1

24
0
0
256223893

数据范围与提示

样例说明

在第一个测试用例中,一种与给定输入结果序列相符的发牌方案如下:第一位玩家持有牌 ,第二位玩家持有 ,第三位玩家持有 ,第四位玩家持有

在第二和第三个测试用例中,不存在与给定输入结果序列相符的发牌方案。