#include <algorithm>
#include <cfloat>
#include <climits>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <functional>
#include <iostream>
#include <map>
#include <memory>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
 
using namespace std;
 
#define sz size()
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(c) (c).begin(), (c).end()
#define rep(i,a,b) for(int i=(a);i<(b);++i)
#define clr(a, b) memset((a), (b) ,sizeof(a))
 
#define MOD 1000000009
 
int main(){
  int n;
  cin>>n;
  vector<int> a,b;
  rep(i,0,n){
    int c;
    cin>>c;
    a.pb(c);
  }
  rep(i,0,n){
    int c;
    cin>>c;
    b.pb(c);
  }
  sort(all(a));
  int all = 0;
  int win = 0;
  do{
    int c = 0;
    rep(i,0,n){
      if(a[i]>b[i]){
        c++;
      }
    }
    all++;
    if(c>n-c){
      win++;
    }
  }while(next_permutation(all(a)));
  cout << 1.*win/all << endl;
  return 0;
}
/*
片側を固定してもう片側を順列で回すと簡単な問題。
Nが小さいのでなんとでも解けるがそうすると時間がかかりそう。
*/