import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int n=sc.nextInt();
int[] stu=new int[n];
int[] car=new int[n];
for(int i=0;i<n;i++){
stu[i]=sc.nextInt();
}
for(int i=0;i<n;i++){
car[i]=sc.nextInt();
}
Arrays.sort(stu);
Arrays.sort(car);
long ans=1;
int cnt=0;
for(int i=n-1;i>=0;i--){
int m=right_bound(car,stu[i]);
ans=ans*(n-m-cnt)%100000007;
cnt++;
}
System.out.println(ans);
}
public static int right_bound(int[] nums, int target) {
if (nums.length == 0){
return -1;
}
int left = 0;
int right = nums.length;
while (left < right) {
int mid = (left + right) / 2;
if (nums[mid]>=target) {
right = mid;
}else{
left = mid + 1;
}
}
return left;
}
}