#include <bits/stdc++.h>
using namespace std;
const int maxn(205);
const double eps(1e-9);
int n, m, flg;
double p[maxn], f[2][maxn], g[maxn][maxn], h[maxn][maxn], ans, inf;
int main() {
  scanf("%d", &n), m = n << 1;
  for (int i = 0; i <= n; ++i) scanf("%lf", &p[i]);
  for (int i = 1; i <= n; ++i)
    if (fabs(p[i] - p[0]) > eps) flg = 1;
  if (!flg) return printf("%.10lf\n", p[0]), 0;
  memset(f, -127, sizeof(f)), memset(g, -127, sizeof(g));
  inf = f[0][0], f[0][0] = 0;
  for (int i = 0; i <= m; ++i)
    for (int j = 0; j <= n; ++j) {
      int k = i + n - j - j;
      if (i - j >= 0 && k >= 0 && k <= m) g[i][k] = max(g[i][k], p[j]);
    }
  int lst = 0, nxt = 1, cnt = 0;
  for (double QwQ = 1, tim = 0; ++cnt <= 20; QwQ += QwQ) {
    for (int i = 0; i <= m; ++i)
      if (f[lst][i] != inf) {
        for (int j = 0; j <= m; ++j)
          if (g[i][j] != inf) f[nxt][j] = max(f[nxt][j], f[lst][i] + g[i][j]);
        f[lst][i] = inf;
      }
    tim += QwQ, memset(h, -127, sizeof(h));
    for (int i = 0; i <= m; ++i)
      for (int j = 0; j <= m; ++j)
        for (int k = 0; k <= m; ++k)
          if (g[i][k] != inf && g[k][j] != inf)
            h[i][j] = max(h[i][j], g[i][k] + g[k][j]);
    memcpy(g, h, sizeof(h)), swap(lst, nxt);
    for (int i = 0; i <= m; ++i) ans = max(ans, f[lst][i] / tim);
  }
  printf("%.10lf\n", ans);
  return 0;
}
