#include <bits/stdc++.h>
using namespace std;
double p[70][70], r[7][70], e[7][70], mx[7][70];
int main() {
  memset(p, 0, sizeof(p));
  memset(r, 0, sizeof(r));
  memset(e, 0, sizeof(e));
  memset(mx, 0, sizeof(mx));
  int n = 0;
  scanf("%d", &n);
  int m = 1 << n;
  int x = 0;
  for (int i = 1; i <= m; ++i) {
    for (int j = 1; j <= m; ++j) {
      scanf("%d", &x);
      p[i][j] = (double)x / 100.0;
    }
  }
  for (int i = 1; i <= m; ++i) {
    r[0][i] = 1.0;
  }
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= m; j += 1 << i) {
      for (int k = j; k < j + (1 << i); ++k) {
        int le = 0, ri = 0;
        if (k >= j + (1 << (i - 1))) {
          le = j;
          ri = j + (1 << (i - 1));
        } else {
          le = j + (1 << (i - 1));
          ri = j + (1 << i);
        }
        for (int l = le; l < ri; ++l) {
          if (k == l) {
            continue;
          }
          r[i][k] += r[i - 1][k] * p[k][l] * r[i - 1][l];
        }
        e[i][k] = r[i][k] * (1 << (i - 1)) + mx[i - 1][le] + e[i - 1][k];
        if (e[i][k] > mx[i][j]) {
          mx[i][j] = e[i][k];
        }
      }
    }
  }
  double res = 0.0;
  for (int i = 1; i <= m; ++i) {
    res = max(res, mx[n][i]);
  }
  printf("%.10lf", res);
  return 0;
}
