#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; void solve(int n, double p, vector >& ans) { ans.assign(n, vector(n, 0.0)); vector dp(1<0; --i){ bitset<32> bs(i); int m = bs.count(); int j = 0; while(!bs[j]) ++ j; if(m == 1){ ans[n-m][j] += dp[i]; dp[i^(1<> n >> pa >> pb; vector a(n), b(n); for(int i=0; i> a[i]; for(int i=0; i> b[i]; sort(a.begin(), a.end()); sort(b.begin(), b.end()); vector > p1, p2; solve(n, pa, p1); solve(n, pb, p2); double ans = 0.0; for(int x=0; x