#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:200000000")
const double EPS = 1E-9;
const int INF = 1000000000;
const long long INF64 = (long long)1E18;
const double PI = 3.1415926535897932384626433832795;
int n, lf[10][200], rg[10][200];
double p[200][200];
double z[10][200], z2[10][200];
bool u[10][200], u2[10][200];
double rec2(int r, int t) {
  if (r == 0) return 1.0;
  if (u2[r][t]) return z2[r][t];
  double res = 0;
  for (int i = lf[r][t]; i <= rg[r][t]; i++)
    if (i < lf[r - 1][t] || rg[r - 1][t] < i) res += rec2(r - 1, i) * p[t][i];
  res *= rec2(r - 1, t);
  u2[r][t] = true;
  return z2[r][t] = res;
}
double rec(int r, int t) {
  if (r == 0) return 0;
  if (u[r][t]) return z[r][t];
  double res = 0;
  double cof = 0;
  for (int i = lf[r][t]; i <= rg[r][t]; i++)
    if (i < lf[r - 1][t] || rg[r - 1][t] < i) res = max(res, rec(r - 1, i));
  res += rec(r - 1, t) + rec2(r, t) * int(1 << (r - 1));
  u[r][t] = true;
  return z[r][t] = res;
}
int main() {
  cin >> n;
  for (int i = 0; i < (int)(1 << n); i++)
    for (int j = 0; j < (int)(1 << n); j++) {
      scanf("%lf", &p[i][j]);
      p[i][j] /= 100;
    }
  int sz = 1;
  for (int r = 0; r <= n; r++) {
    for (int i = 0; i < (1 << n); i += sz) {
      for (int j = 0; j < (int)(sz); j++) {
        lf[r][i + j] = i;
        rg[r][i + j] = i + sz - 1;
      }
    }
    sz *= 2;
  }
  double ans = 0;
  for (int i = 0; i < (int)(1 << n); i++) ans = max(ans, rec(n, i));
  printf("%.10lf\n", ans);
  return 0;
}
