#include using namespace std; double dp[11][1050]; int main() { cin.tie(0); ios::sync_with_stdio(false); int m; cin >> m; int n = (1 << m); vector s(n); for (int i = 0; i < n; i++) { cin >> s[i]; dp[0][i] = 1.0; } for (int i = 1; i <= m; i++) { for (int j = 0; j < n; j++) { int c = 1 << (i - 1); double tmp = s[j] * s[j]; for (int k = 0; k < c; k++) { int e = j ^ (c + k); dp[i][j] += dp[i - 1][e] * tmp / (tmp + s[e] * s[e]); } dp[i][j] *= dp[i - 1][j]; if (i == m && j == 0) { cout << fixed << setprecision(10) << dp[m][0] << endl; return 0; } } } return 0; }