#140 · binary-search-game-e006d2

二分查找游戏

Not startedHard
Time10.0 s
Memory1,024 MB
Submissions0
Acceptance0.0%
0%100%

Statement

Alice 和 Bob 要玩二分查找游戏。游戏在一块由一行 个格子组成的棋盘上进行。
每个格子包含一个介于 和 (含)之间的整数。还有 张编号为 到 的卡片。
游戏开始前,裁判会以 种可能方式之一,在每张卡片上写一个介于 和 (含)之间的整数。
Alice 和 Bob 在开始游戏前知道格子中以及每张卡片上的整数。

游戏轮流进行,Alice 先手。总共有 回合,这意味着 Alice 进行 回合,Bob 进行 回合。
在某个回合中,玩家可以消除剩余格子最左的一半或最右的一半。例如,考虑一个包含数字 的棋盘。
在她的第一回合,Alice 必须选择消除一半,留下 或 。
如果她消除最左的一半并留下 ,那么 Bob 必须在留下 和 之间选择。
如果他留下 ,那么游戏的最后一回合将由 Alice 在 和 之间选择。

游戏结束时,他们查看唯一剩余格子中的数字 。游戏的*分数*是写在编号为 的卡片上的整数。
在上面的例子中,如果 Alice 在她的最后一回合消除 并留下 ,那么游戏的分数将是裁判写在编号为 的卡片上的数字。

Alice 采取最优策略以最大化游戏分数,而 Bob 采取最优策略以最小化它。
他们给定一个固定棋盘,其格子中包含整数 。
为了最大公平性,他们将进行 场游戏,裁判会为每场游戏选择一种不同的在卡片上写整数的方式。
也就是说,对于任何一种在卡片上写整数的方式,Alice 和 Bob 都会用它恰好进行一场游戏。
给定游戏参数和固定棋盘内容,请确定所有这些游戏分数之和。
由于输出可能非常大,我们只要求你输出将结果除以质数 () 后的余数。

Input

输入的第一行给出测试用例数量 。接下来有 个测试用例。
每个测试用例恰好由两行组成。
每个测试用例的第一行包含三个整数 、 和 。
第二行包含 个整数 ,
其中 是棋盘从左数第 个格子中包含的整数。

### 数据范围

- .
- .
- , 对所有 .
- .
- .
- .
- .

Output

按测试用例顺序逐个输出答案。对于每个测试用例,输出一行,包含 $y$,其中 是所有 场游戏的分数之和,对质数 () 取模。

Examples

Example 1

Input

3
2 2 2
2 1 1 1
4 3 2
3 1 1 4
5 100 3
2 4 1 1 4 5 2 5

Output

6
144
991661422

Constraints

  • Time limit: 10000 ms
  • Memory limit: 1048576 KB
  • Tag: dynamic-programming
  • Tag: math

Loading language catalog...