#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); int k = j ^ c; for (int e = k, l = k + c; e < l; e++) { double tmp = s[j] * s[j]; 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; }