atcoder#ABC214G. [ABC214G] Three Permutations

[ABC214G] Three Permutations

配点 : 600600

問題文

(1,,N)(1, \dots, N) の順列 p=(p1,,pN),q=(q1,,qN)p = (p_1, \dots, p_N), q = (q_1, \dots, q_N) が与えられます。

(1,,N)(1, \dots, N) の順列 r=(r1,,rN)r = (r_1, \dots, r_N) であって、全ての i(1iN)i \, (1 \leq i \leq N) に対し ripir_i \neq p_i かつ riqir_i \neq q_i となるようなものの総数を (109+7)(10^9 + 7) で割った余りを求めてください。

制約

  • 1N30001 \leq N \leq 3000
  • 1pi,qiN1 \leq p_i, q_i \leq N
  • pipj(ij)p_i \neq p_j \, (i \neq j)
  • qiqj(ij)q_i \neq q_j \, (i \neq j)
  • 入力は全て整数である。

入力

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

NN

p1p_1 \ldots pNp_N

q1q_1 \ldots qNq_N

出力

答えを出力せよ。

4
1 2 3 4
2 1 4 3
4

$(3, 4, 1, 2), (3, 4, 2, 1), (4, 3, 1, 2), (4, 3, 2, 1)$ の 44 つが条件を満たします。

3
1 2 3
2 1 3
0

答えが 00 になることもあります。

20
2 3 15 19 10 7 5 6 14 13 20 4 18 9 17 8 12 11 16 1
8 12 4 13 19 3 10 16 11 9 1 2 17 6 5 18 7 14 20 15
803776944

(109+7)(10^9 + 7) で割った余りを出力することに注意してください。