#include <bits/stdc++.h>
using namespace std;
const int N = 100;
double pr[10][N][N], p[N][N], dp[10][N][N];
int n;
int main() {
  double ans = 0;
  cin >> n;
  for (int i = 0; i < (1 << n); i++)
    for (int j = 0; j < (1 << n); j++) cin >> p[i][j], p[i][j] /= 100;
  for (int i = 0; i < (1 << n); i++) pr[0][i][i] = 1;
  for (int i = 1; i <= n; i++)
    for (int j = 0; j < (1 << (n - i)); j++) {
      int d = (1 << i);
      for (int g = 0; g < d; g++) {
        int o = d * j + g;
        double t = pr[i - 1][j * 2 + (g >= d / 2)][o];
        double k = 0;
        for (int h = 0; h < d / 2; h++) {
          int o2 = d * j + h;
          if (g < d / 2) o2 += d / 2;
          k += pr[i - 1][j * 2 + (g < d / 2)][o2] * p[o][o2];
        }
        pr[i][j][o] = k * t;
      }
    }
  for (int i = 1; i <= n; i++)
    for (int j = 0; j < (1 << (n - i)); j++) {
      int d = (1 << i);
      int p3 = (1 << (i - 1));
      for (int g = 0; g < d; g++) {
        int o = d * j + g;
        double t = dp[i - 1][j * 2 + (g >= d / 2)][o];
        double p1 = pr[i - 1][j * 2 + (g >= d / 2)][o];
        double m = 0;
        for (int h = 0; h < d / 2; h++) {
          int o2 = d * j + h;
          if (g < d / 2) o2 += d / 2;
          m = max(m, dp[i - 1][j * 2 + (g < d / 2)][o2]);
        }
        t += m;
        double k = 0;
        for (int h = 0; h < d / 2; h++) {
          int o2 = d * j + h;
          if (g < d / 2) o2 += d / 2;
          k += pr[i - 1][(j * 2 + (g < d / 2))][o2] * p[o][o2];
        }
        t += p1 * p3 * k;
        dp[i][j][o] = t;
        if (i == n) ans = max(ans, t);
      }
    }
  cout << setprecision(9) << fixed << ans << endl;
  return 0;
}
