There are N computers and N sockets in a one-dimensional world. The coordinate of the i-th computer is a_i, and the coordinate of the i-th socket is b_i. It is guaranteed that these 2N coordinates are pairwise distinct.

Snuke wants to connect each computer to a socket using a cable. Each socket can be connected to only one computer.

In how many ways can he minimize the total length of the cables? Compute the answer modulo 10^9+7.

Constraints

* 1 ≤ N ≤ 10^5
* 0 ≤ a_i, b_i ≤ 10^9
* The coordinates are integers.
* The coordinates are pairwise distinct.

Input

The input is given from Standard Input in the following format:


N
a_1
:
a_N
b_1
:
b_N


Output

Print the number of ways to minimize the total length of the cables, modulo 10^9+7.

Examples

Input

2
0
10
20
30


Output

2


Input

3
3
10
8
7
12
5


Output

1
#include<bits/stdc++.h>
#define pii pair<int,int>
#define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
#define per(i,j,k) for(int i=(int)j;i>=(int)k;i--)
using namespace std;
const int P=1000000007;
const int N=210000;
pii a[N];int n;
int main(){
    scanf("%d",&n);
    rep(i,1,n){
        scanf("%d",&a[i].first);a[i].second=-1;
    }
    rep(i,1,n){
        scanf("%d",&a[i+n].first);a[i+n].second=1;
    }
    sort(a+1,a+1+2*n);
    int ans=1;
    int pre=0;
    rep(i,1,2*n){
        if(pre==0){
            pre+=a[i].second;
        }
        else{
            if(a[i].second*pre>0)pre+=a[i].second;
            else{
                ans=ans*1ll*abs(pre)%P;
                pre+=a[i].second;
            }
        }
    }
    printf("%d\n",ans);
    return 0;
}

