atcoder#ARC093D. [ARC093F] Dark Horse

[ARC093F] Dark Horse

配点 : 11001100

問題文

2N2^N 人の選手がおり、それぞれ 1,2,...,2N1, 2, ..., 2^N の番号がついています。 これらの選手でトーナメントを行うことにしました。

トーナメントは以下のようにして行われます。

  • 1,2,...,2N1, 2, ..., 2^N の置換 p1,p2,...,p2Np_1, p_2, ..., p_{2^N} を選ぶ。
  • 選手たちが選手 p1p_1, 選手 p2p_2, ......, 選手 p2Np_{2^N} の順に一列に並ぶ。
  • 列に残っている選手が 11 人だけになるまで、以下を繰り返す。- 列の前から 11 番目と 22 番目、33 番目と 44 番目、...... の選手が対戦を行う。 負けた選手は列から離れる。勝った選手たちは相対順序を保ったまま改めて一列に並ぶ。
  • 列の前から 11 番目と 22 番目、33 番目と 44 番目、...... の選手が対戦を行う。 負けた選手は列から離れる。勝った選手たちは相対順序を保ったまま改めて一列に並ぶ。
  • 最後まで残った選手が優勝である。

22 人の選手が対戦したときの結果は、入力として与えられる MM 個の 整数 A1,A2,...,AMA_1, A_2, ..., A_M を用いて以下のように書けることが分かっています。

  • ある ii について y=Aiy = A_i のとき、選手 11 と選手 yy (2y2N2 \leq y \leq 2^N) が対戦すると選手 yy が勝つ。
  • どの ii についても yAiy \neq A_i のとき、選手 11 と選手 yy (2y2N2 \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} だけに依存します。 トーナメントを行う際に最初に選ぶ置換 p1,p2,...,p2Np_1, p_2, ..., p_{2^N} であって、 トーナメントの結果選手 11 が優勝するようなものの個数を 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

出力

答えを出力せよ。

2 1
3
8

条件を満たす pp としては [1,4,2,3][1, 4, 2, 3][3,2,1,4][3, 2, 1, 4] などが、条件を満たさない pp としては [1,2,3,4][1, 2, 3, 4][1,3,2,4][1, 3, 2, 4] などがあります。

4 3
2 4 6
0
3 0
40320
3 3
3 4 7
2688
16 16
5489 5490 5491 5492 5493 5494 5495 5497 18993 18995 18997 18999 19000 19001 19002 19003
816646464