#include using namespace std; #define int long long #define rep(i,n) for(int i=0; i<(int)n; i++) #define rep1(i,n) for(int i=1; i<(int)n; i++) #define repa(i,a,n) for(int i=(a); i<(int)(n); i++) #define all(vec) vec.begin(),vec.end() #define COUT(x) cout<<(x)<; using vs = vector; using vvi = vector; using pii = pair; using psi = pair; const int dx[4] = {1, 0,-1, 0}; const int dy[4] = {0, 1, 0,-1}; const int mod = 1e9+7; int gcd(int a, int b){if(a%b == 0){return(b);}else{return(gcd(b, a%b));}} int lcm(int a, int b){return a/gcd(a, b)*b;} //cout << fixed << setprecision(15); int N, M, K, H, W, L, R, X, Y; string S, T; int INF = 1e18; signed main(){ cin >> N; vi A(N); rep(i,N) cin >> A[i]; vi B(N); rep(i,N) cin >> B[i]; sort(all(A)); int aw = 0; int bw = 0; int drow = 0; do{ sort(all(B)); do{ int ca = 0; int cb = 0; rep(i,N){ if(A[i]>B[i]) ca++; else if(A[i]cb)aw++; else if(ca==cb) drow++; else bw++; }while(next_permutation(all(B))); }while(next_permutation(all(A))); cout << fixed << setprecision(4); bw += aw+drow; COUT((double)aw/(double)bw); return 0; }