#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define rep2(i, s, n) for (int i = (int)(s); i < (int)(n); i++) #define repb(i, e) for (int i = (int)(e); i >= 0; i--) #define all(x) x.begin(), x.end() using namespace std; using ll = long long; using ull = unsigned long long; using vi = vector; using vll = vector; using vd = vector; using vvi = vector; using vvll = vector; using vvd = vector; using vs = vector; using vb = vector; using vvb = vector; using vc = vector; using vvc = vector; using pii = pair; using pll = pair; using pil = pair; using pli = pair; using vpii = vector; using vpll = vector; using vpil = vector; using vpli = vector; const double PI = acos(-1); const ll MOD = 1000000007; const ll MODL = 2147483647; const int INF = 1000000007; const ll INFL = 1LL<<60; template inline bool chmin(T &a, T b) {if (a > b) {a = b; return true;} return false;} template inline bool chmax(T &a, T b) {if (a < b) {a = b; return true;} return false;} // template T gcd(T a, T b) {if (a < b) swap(a, b); if (b == 0) return a; else return gcd(b, 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;} inline void add(ll &a, ll b, ll m) {a = ((a % m + b % m)) % m;} inline void sub(ll &a, ll b, ll m) {a = ((a % m - b % m) + m) % m;} inline void mul(ll &a, ll b, ll m) {a = ((a % m) * (b % m)) % m;} void dfs(int tmp, int num, int nw, int n, const vi &a, const vi &b, vi &dp) { if (num == n) { dp[nw]++; return; } rep(i, n) { if (tmp & (1<> n; vi a(n); vi b(n); rep(i, n) cin >> a[i]; rep(i, n) cin >> b[i]; vi dp(n+1, 0); dfs(0, 0, 0, n, a, b, dp); rep(i, n+1) { if (i > n-i) sumw += dp[i]; else suml += dp[i]; } cout << fixed << setprecision(10); cout << sumw / (sumw + suml) << endl; }