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>
using namespace std;

#define ll long long
#define inf 100000000000000000
#define rep(i,a) for(ll i=0; i<a; ++i)
#define pb push_back

ll n;
ll a[100005];
ll b[100005];

ll mod = 1000000007;

int main() {
  ios::sync_with_stdio(false);
  cin>>n;
  rep(i,n) {
    cin>>a[i];
  }
  rep(i,n) {
    cin>>b[i];
  }
  sort(a,a+n);
  sort(b,b+n);
  ll ia=0;
  ll ib=0;
  ll x=0, y=0;
  ll ans=1;
  while(ia<n && ib<n) {
    if (a[ia]<b[ib]) {
      if (y==0) {
        x++;
      } else {
        ans*=y;
        ans = ans%mod;
        y--;
      }
      ia++;
    } else {
      if (x==0) {
        y++;
      } else {
        ans*=x;
        ans = ans%mod;
        x--;
      }
      ib++;
    }
  }
  while(ia<n) {
    if (y==0) {
      x++;
    } else {
      ans*=y;
      ans = ans%mod;
      y--;
    }
    ia++;
  }
  while(ib<n) {
    if (x==0) {
      y++;
    } else {
      ans*=x;
      ans = ans%mod;
      x--;
    }
    ib++;
  }
  cout<<ans<<endl;
}
