#bcu30c. [bcu30_c]クロスワード

[bcu30_c]クロスワード

問題文

サイバーエージェントの社員の間では、クロスワードが流行っています。

今回作ろうとしているのは、2222 列の 44 マスに文字を一つずつ入れ、各行を左から読んだとき、および各列を上から読んだ時に、 いずれも単語となるものです。ただし、文字の種類が多いので、この問題では一つの整数が一つの文字に対応しているものとします。

あなたは、文字の種類数 NN と辞書に載っている MM 個の単語が与えられます。 それぞれの文字は便宜上、 11 から NN の整数で表されます。 辞書は MM 行からなり、そのうち ii 行目 (1leqileqM)(1 \\leq i \\leq M) には、整数 aia_ibib_i が書かれています。 これは、11 文字目が aia_i22 文字目が bib_i である単語が存在することを意味しています。 同じ単語が辞書に複数回登場することはありません。

今、マスには何も書かれていないので、それぞれの文字を入れた時、各行各列を読んだときいずれも存在する単語となるようにしたいです。 ありうる文字の入れ方の総数を求めてください。ただし、同じ単語を複数回使用してもかまいません。

制約

  • 1leqNleq3001 \\leq N \\leq 300
  • 1leqMleqNtimesN1 \\leq M \\leq N \\times N
  • 1leqai,bileqN1 \\leq a_i, b_i \\leq N (1leqileqM)(1 \\leq i \\leq M)
  • (ai,bi)neq(aj,bj)(a_i, b_i) \\neq (a_j, b_j) (1leqi<jleqM)(1 \\leq i < j \\leq M)

入力

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

NN MM a1a_1 b1b_1 : aMa_M bMb_M

出力

文字の入れ方の総数を出力せよ。


入力例 1

3 4
1 2
2 1
3 1
2 3

出力例 1

5

ありうる文字の入れ方は、下図のように 55 通りあります。


入力例 2

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

出力例 2

47