AT_bitflyer2018_final_g Following Permutations
Description
[problemUrl]: https://atcoder.jp/contests/bitflyer2018-final/tasks/bitflyer2018_final_g
整数 $ N $ および $ M $ 個の整数の $ 3 $ つ組 $ (A_i,\ B_i,\ C_i) $ ($ 1\ \leq\ i\ \leq\ M $) が与えられます。 $ 1,\ 2,\ ...,\ N $ の置換 $ p $ であって、すべての $ i $ ($ 1\ \leq\ i\ \leq\ M $) に対して以下の条件を満たすものの個数を $ 10^9\ +\ 7 $ で割ったあまりを求めてください。
- 長さ $ N $ の置換をすべて辞書順に並べたとき $ p $ の $ A_i $ 個あとにあたる置換 $ q\ =\ [q_1,\ q_2,\ ...,\ q_N] $ が存在し、$ q_{B_i}\ =\ C_i $ である。
なお、上の条件において、$ A_i\ =\ 0 $ のとき $ q $ は $ p $ 自身であるとします。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ M $ $ A_1 $ $ B_1 $ $ C_1 $ $ A_2 $ $ B_2 $ $ C_2 $ $ : $ $ A_M $ $ B_M $ $ C_M $
Output Format
答えを出力せよ。
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 50 $
- $ 0\ \leq\ M\ \leq\ 50 $
- $ 0\ \leq\ A_i\ \leq\ 50 $ ($ 1\ \leq\ i\ \leq\ M $)
- $ A_i\ \leq\ N!\ -\ 1 $ ($ 1\ \leq\ i\ \leq\ M $)
- $ 1\ \leq\ B_i,\ C_i\ \leq\ N $ ($ 1\ \leq\ i\ \leq\ M $)
- $ i\ \neq\ j $ のとき、$ A_i\ \neq\ A_j $ または $ B_i\ \neq\ B_j $ または $ C_i\ \neq\ C_j $
### Sample Explanation 1
$ 1,\ 2,\ 3 $ の置換をすべて辞書順に並べると $ [1,\ 2,\ 3] $, $ [1,\ 3,\ 2] $, $ [2,\ 1,\ 3] $, $ [2,\ 3,\ 1] $, $ [3,\ 1,\ 2] $, $ [3,\ 2,\ 1] $ となります。 このうち条件を満たす置換は $ [3,\ 1,\ 2] $ だけです。