#codefestival2017qualcf. [code_festival_2017_qualc_f]Three Gluttons

[code_festival_2017_qualc_f]Three Gluttons

问题陈述

三个人,A、B和C一起吃寿司。开始时,有NN片寿司,编号从11NN。其中,NN33的倍数。

这三个人对寿司有喜好和厌恶。A的喜好由(a1, ...,aN)(a_1,\ ...,\\ a_N)表示,是从11NN的整数的排列。对于每个ii1iN1\leq i \leq N),A的第ii个最喜欢的寿司是第aia_i个寿司。类似地,B和C的喜好由(b1,...,bN)(b_1,\\ ...,\\ b_N)(c1,...,cN)(c_1,\\ ...,\\ c_N)表示,也是从11NN的整数的排列。

这三个人重复以下动作,直到所有的寿司被消耗完或发生争斗(稍后描述):

  • 每个人A、B和C在剩余的寿司中找到自己最喜欢的一片寿司。分别将这些寿司标记为xxyyzz。如果xxyyzz都不相同,则A、B和C分别吃掉寿司xxyyzz。否则,发生争斗。

给定A和B的喜好,(a1,...,aN)(a_1,\\ ...,\\ a_N)(b1,...,bN)(b_1,\\ ...,\\ b_N),有多少种C的喜好(c1,...,cN)(c_1,\\ ...,\\ c_N)可以使所有的寿司都被消耗完而没有发生争斗?以109+710^9+7为模计算数量。

约束条件

  • 3N3993 \leq N \leq 399
  • NN33的倍数。
  • (a1,...,aN)(a_1,\\ ...,\\ a_N)(b1,...,bN)(b_1,\\ ...,\\ b_N)都是从11NN的整数的排列。

输入

输入以以下格式从标准输入给出:

NN a1a_1 ...... aNa_N b1b_1 ...... bNb_N

输出

打印C的喜好数量,使得所有寿司都被消耗完而没有发生争斗,以109+710^9+7为模。


示例输入1

3
1 2 3
2 3 1

示例输出1

2

答案是两种,$(c_1,\\ c_2,\\ c_3) = (3,\\ 1,\\ 2),\\ (3,\\ 2,\\ 1)$。在这两种情况下,A、B和C将分别吃掉寿司112233,不再有寿司剩余。


示例输入2

3
1 2 3
1 2 3

示例输出2

0

无论(c1,c2,c3)(c_1,\\ c_2,\\ c_3)是什么排列,A和B都会试图吃掉寿司11,导致发生争斗。


示例输入3

6
1 2 3 4 5 6
2 1 4 3 6 5

示例输出3

80

例如,如果$(c_1,\\ c_2,\\ c_3,\\ c_4,\\ c_5,\\ c_6) = (5,\\ 1,\\ 2,\\ 6,\\ 3,\\ 4)$,A、B和C将分别先后吃掉寿司112255,然后分别吃掉寿司334466,不再有寿司剩余。


示例输入4

6
1 2 3 4 5 6
6 5 4 3 2 1

示例输出4

160

示例输入5

9
4 5 6 7 8 9 1 2 3
7 8 9 1 2 3 4 5 6

示例输出5

33600