#arc093d. [arc093_d]Dark Horse

[arc093_d]Dark Horse

问题描述

2N2^N 个玩家,编号为 1,2,...,2N1, 2, ..., 2^N。他们决定举办一场比赛。

比赛的进行如下:

  • 选择一个排列 1,2,...,2N1, 2, ..., 2^Np1,p2,...,p2Np_1, p_2, ..., p_{2^N}
  • 玩家按照 p1,p2,...,p2Np_1, p_2, ..., p_{2^N} 的顺序排成一行。
  • 重复以下步骤直到只剩下一位玩家:
    • 进行下列比赛:排在行中第一位的玩家对阵排在行中第二位的玩家,排在行中第三位的玩家对阵排在行中第四位的玩家,以此类推。败者离开行,胜者按照相对顺序重新排成一行。
  • 最后留在行中的玩家就是冠军。

已知,两位玩家之间比赛的结果可以通过输入的 MM 个整数 A1,A2,...,AMA_1, A_2, ..., A_M 来判断:

  • y=Aiy = A_i,其中 ii 为某个整数时,玩家 11 和玩家 yy2y2N2 \leq y \leq 2^N)之间的比赛胜者是玩家 yy
  • yAiy \neq A_i,对于所有的 ii,玩家 11 和玩家 yy2y2N2 \leq y \leq 2^N)之间的比赛胜者是玩家 11
  • 2x<y2N2 \leq x < y \leq 2^N,玩家 xx 和玩家 yy 之间的比赛胜者是玩家 xx

这场比赛的冠军只取决于一开始选择的排列 p1,p2,...,p2Np_1, p_2, ..., p_{2^N}。求满足冠军为玩家 11 的排列 p1,p2,...,p2Np_1, p_2, ..., p_{2^N} 的数量,结果对 109+710^9 + 7 取模。

约束条件

  • 1N161 \leq N \leq 16
  • 0M160 \leq M \leq 16
  • 2Ai2N2 \leq A_i \leq 2^N (1iM1 \leq i \leq M)
  • Ai<Ai+1A_i < A_{i + 1} (1i<M1 \leq i < M)

输入

输入以以下格式从标准输入给出:

NN MM A1A_1 A2A_2 ...... AMA_M

输出

输出答案。


示例输入 1

2 1
3

示例输出 1

8

满足条件的排列 pp 的示例有:\[1, 4, 2, 3\]\[3, 2, 1, 4\]。不满足条件的排列 pp 的示例有:\[1, 2, 3, 4\]\[1, 3, 2, 4\]


示例输入 2

4 3
2 4 6

示例输出 2

0

示例输入 3

3 0

示例输出 3

40320

示例输入 4

3 3
3 4 7

示例输出 4

2688

示例输入 5

16 16
5489 5490 5491 5492 5493 5494 5495 5497 18993 18995 18997 18999 19000 19001 19002 19003

示例输出 5

816646464