#include using namespace std; using ll = long long; using ull = unsigned long long; #define pb push_back #define rep(i, n) for (int i = 0; i < (n); i++) #define reps(i, n) for (int i = 1; i <= (n); i++) #define for_(i, a, b) for (int i = (a); i < (b); i++) #define all(v) v.begin(), v.end() #define Yes(b) ((b) ? "Yes" : "No") #define YES(b) ((b) ? "YES" : "NO") template inline bool chmin(T &a, const T &b) { bool compare = a > b; if (a > b) a = b; return compare; } template inline bool chmax(T &a, const T &b) { bool compare = a < b; if (a < b) a = b; return compare; } template T gcd(T a, T b) { if (b == 0) return a; else return gcd(b, a % b); } template inline T lcm(T a, T b) { return (a * b) / gcd(a, b); } template inline T ceil(T a, T b) { return (a + (b - 1)) / b; } template inline T floor(T a, T b) { return a / b; } int main() { int N; cin >> N; vector A(N); rep(i, N) { cin >> A[i]; } vector B(N); rep(i, N) { cin >> B[i]; } sort(all(A)); sort(all(B)); ll ans = 0; ll sum = 0; do { vector B_copy = B; do { int cnt = 0; rep(i, N) { if (A[i] > B[i]) cnt++; } if (cnt > N / 2) { ans++; } sum++; } while (next_permutation(all(B_copy))); } while (next_permutation(all(A))); cout << (double)ans / (double)sum << endl; return 0; }