给定一个长度为 n 的排列 p 和一个长度为 n 的数组 q 。你可以进行如下操作任意多次(包括 0 次):选择两个下标 i,j,交换pi和pj。
求有多少种操作完后的排列满足 p 中的每个位置小于等于 q 中的对应位置。即,对于任意i(1<=i<=n), pi<=qi。你需要输出总数对10^9+7取模后的结果。
给定一个长度为 n 的排列 p 和一个长度为 n 的数组 q 。你可以进行如下操作任意多次(包括 0 次):选择两个下标 i,j,交换pi和pj。
求有多少种操作完后的排列满足 p 中的每个位置小于等于 q 中的对应位置。即,对于任意i(1<=i<=n), pi<=qi。你需要输出总数对10^9+7取模后的结果。
第一行一个整数 n。
第二行 n 个互不相同的整数,代表排列 p 。
第三行 n 个整数,代表数组 q 。
4 4 3 2 1 4 4 2 2
4
样例2输入
5
1 2 3 4 5
1 1 3 5 5
样例2输出
0
样例1说明:
共有四种满足条件的排列:
1. 不进行任何操作得到[4,3,2,1];
2. 交换第1个位置和第2个位置得到[3,4,2,1];
3. 交换第3个位置和第4个位置得到[4,3,1,2];
4. 交换第1个位置和第2个位置,再交换第3个位置和第4个位置得到[3,4,1,2]。
数据范围:
对于40%的数据,n<=10;
对于50%的数据,n<=20;
对于60%的数据,n<=10^3;
对于另外20%的数据,数组 q 中整数互不相同。
对于所有数据,1<=n<=10^5,1<=pi,qi<=n。