问题 A: 船长

内存限制:512 MB 时间限制:1 S
题面:传统 评测方式:文本比较 上传者:
提交:24 通过:14

题目描述

大嘤帝国的东格玛男人,染染,终于成为了一名水手!
正如隔壁某位将军的那句“不想做将军的士兵不是好士兵”,不想做船长的水手不是好水手。作为一名好水手,染染自然也报名参与了船长的竞选。
报名那天,经过广泛的交流,染染得知,包括他自己在内,总共有 n 名水手参与竞选。这 n 名水手都被赋予了一个编号,可以认为第 i 名参与竞选的水手的编号即为 i。特别的,染染的编号为 p0。
这 n 名参与竞选的水手当然也不是谁都有竞争力的。根据染染的情报,只有 k 名水手会对染染造成威胁,其中第 j 名水手的编号为 pj,而染染当然不想在竞选时碰上这些对手。
竞选会持续若干轮,每轮会在仍在竞选的水手中大致筛选掉其中的一半,直至仍在竞选的水手只剩下一名,这一名水手就是最后的船长。在每一轮竞选中,假设仍在竞选的水手剩下 m 名,编号从小到大依次为 q1,q2,⋯,qm,则水手 q1和水手 q2 进行一次较量,水手 q3和水手 q4进行一次较量,依此类推总共进行 ⌊m/2⌋(m/2,下取整)次较量,并剩下 ⌈m/2⌉(m/2 , 上取正)名水手进入下一轮竞选。注意,如果 m 为奇数,则水手 qm在本次竞选中不用参与任何一次较量,直接进入下一轮竞选。
现在,染染想要知道,如果他和其它水手的较量一定赢,而其他水手之间的较量双方赢的概率相等(即都是 1/2),则染染不会碰上会对染染造成威胁的 k 名水手的概率对 998244353 取模后的结果。

输入格式

本题单个测试点内包含多组测试数据。

输入第一行一个正整数 T (1≤T≤20),表示数据组数。
每组数据第一行两个非负整数 n (1≤n≤109)和 k (0≤k<min⁡{n,105}),分别表示参与竞选的水手数量和会对染染造成威胁的水手数量。
第二行k+1 个两两不同的正整数 p0,p1,p2,⋯,pk (1≤pj≤n),表示染染的编号和会对染染造成威胁的水手的编号。
保证单个测试点内每组数据中 k+1 的和不超过 106

输出格式

对于每组数据输出一行一个非负整数,表示答案概率对 998244353 取模后的结果。

输入样例 复制

3
10 0
1
8 2
1 3 5
4 2
1 3 4

输出样例 复制

1
623902721
0

数据范围与提示

对于第一组样例,没有水手能对染染造成威胁,答案即为 1。
对于第二组样例,染染分别有可能在第二轮碰上水手 3 和在第三轮碰上水手 5,碰上的概率分别为 1/2 和 1/4,答案为 (1−1/2)(1−1/4)=3/8
对于第三组样例,不管第一轮竞选是水手 3 还是水手 4 赢,染染都会在第二轮碰上,所以答案为 0。