#bitflyer2018finalg. [bitflyer2018_final_g]Following Permutations

[bitflyer2018_final_g]Following Permutations

問題文

整数 NN および MM 個の整数の 33 つ組 (Ai,Bi,Ci)(A_i, B_i, C_i) (1leqileqM1 \\leq i \\leq M) が与えられます。 1,2,...,N1, 2, ..., N の置換 pp であって、すべての ii (1leqileqM1 \\leq i \\leq M) に対して以下の条件を満たすものの個数を 109+710^9 + 7 で割ったあまりを求めてください。

  • 長さ NN の置換をすべて辞書順に並べたとき ppAiA_i 個あとにあたる置換 q = \[q_1, q_2, ..., q_N\] が存在し、qBi=Ciq_{B_i} = C_i である。

なお、上の条件において、Ai=0A_i = 0 のとき qqpp 自身であるとします。

制約

  • 1leqNleq501 \\leq N \\leq 50
  • 0leqMleq500 \\leq M \\leq 50
  • 0leqAileq500 \\leq A_i \\leq 50 (1leqileqM1 \\leq i \\leq M)
  • AileqN!1A_i \\leq N! - 1 (1leqileqM1 \\leq i \\leq M)
  • 1leqBi,CileqN1 \\leq B_i, C_i \\leq N (1leqileqM1 \\leq i \\leq M)
  • ineqji \\neq j のとき、AineqAjA_i \\neq A_j または BineqBjB_i \\neq B_j または CineqCjC_i \\neq C_j

入力

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

NN MM A1A_1 B1B_1 C1C_1 A2A_2 B2B_2 C2C_2 :: AMA_M BMB_M CMC_M

出力

答えを出力せよ。


入力例 1

3 1
1 2 2

出力例 1

1

1,2,31, 2, 3 の置換をすべて辞書順に並べると \[1, 2, 3\], \[1, 3, 2\], \[2, 1, 3\], \[2, 3, 1\], \[3, 1, 2\], \[3, 2, 1\] となります。 このうち条件を満たす置換は \[3, 1, 2\] だけです。


入力例 2

10 2
10 10 10
11 10 10

出力例 2

0

入力例 3

20 2
0 1 1
50 1 2

出力例 3

50

入力例 4

50 0

出力例 4

318608048

入力例 5

30 5
27 18 22
43 19 26
27 26 13
22 9 27
31 20 12

出力例 5

440732388