#agc016f. [agc016_f]Games on DAG

[agc016_f]Games on DAG

問題文

NN 頂点 MM 辺の有向グラフ GG があります。 頂点には 11 から NN まで番号が振られています。 辺には 11 から MM まで番号が振られています。 辺 ii は頂点 xix_i から yiy_i へ張られています。 ただし、xi<yix_i < y_i です。 また、多重辺はありません。

GGMM 本の辺集合からある部分集合を選び、GG からそれらの辺を取り除いてグラフ GG' を作ることを考えます。 このとき、グラフ GG'2M2^M 通りあり得ます。

グラフ GG' の上で、高橋君と青木君が次のようなゲームで勝負します。 まず、頂点 11, 22 に駒をひとつずつ置きます。 高橋君から始め、高橋君と青木君が交互に次の操作を行います。

  • 頂点 xix_i に駒が置かれているような辺 ii を選び、頂点 xix_i の駒 (22 つある場合は一方のみ) を頂点 yiy_i へ移動する。 22 つの駒が同一の頂点に置かれてもよい。

先に操作を行えなくなった方が負けです。 二人は最適に行動するとします。

2M2^M 通りの GG' のうち、高橋君が勝つような GG' は何通りでしょうか? 109+710^9+7 で割った余りを求めてください。

制約

  • 2N152 ≤ N ≤ 15
  • 1MN(N1)/21 ≤ M ≤ N(N-1)/2
  • 1xi<yiN1 ≤ x_i < y_i ≤ N
  • (xi,yi)(x_i,\\ y_i) はすべて相異なる。

入力

入力は以下の形式で標準入力から与えられる。

NN MM x1x_1 y1y_1 x2x_2 y2y_2 :: xMx_M yMy_M

出力

高橋君が勝つような GG' は何通りか? 109+710^9+7 で割った余りを出力せよ。


入力例 1

2 1
1 2

出力例 1

1

GG' は次図の 22 通りです。 高橋君が勝つ場合は ○ で、負ける場合は × で表しています。

b250f23c38d0f5ec2204bd714e7c1516.png


入力例 2

3 3
1 2
1 3
2 3

出力例 2

6

GG' は次図の 88 通りです。

8192fd32f894f708c5e4a60dcdea9d35.png


入力例 3

4 2
1 3
2 4

出力例 3

2

入力例 4

5 10
2 4
3 4
2 5
2 3
1 2
3 5
1 3
1 5
4 5
1 4

出力例 4

816