题目描述
给定一个长度为 n 的排列 p 和一个长度为 n 的数组 q 。你可以进行如下操作任意多次(包括 0 次):选择两个下标 i,j ,交换 pi 和 pj 。
求有多少种操作完后的排列满足 p 中的每个位置小于等于 q 中的对应位置。即,∀i∈[1,n],pi≤qi 。你需要输出总数对 109+7 取模后的结果。
输入格式
第一行一个整数 n。
第二行 n 个互不相同的整数,代表排列 p 。
第三行 n 个整数,代表数组 q 。
输出格式
一行一个整数,表示答案对 109+7 取模后的结果
输入样例1
4
4 3 2 1
4 4 2 2
输出样例1
4
输入样例2
5
1 2 3 4 5
1 1 3 5 5
输出样例2
0
对于样例1,可能的排列有[3,4,1,2],[4,3,1,2],[3,4,2,1],[4,3,2,1]。
对于样例2,因为只有一个1,所以第一个和第二个位置有一个位置会无法放置,答案为0。
数据范围
对于40%的数据,n≤10;
对于50%的数据,n≤20;
对于60%的数据,n≤103;
对于另外20%的数据,数组 q 中整数互不相同。
对于所有数据,1≤n≤105,1≤pi,qi≤n。