#include <bits/stdc++.h>
using namespace std;
const int O = 220;
int n;
struct matrix {
  double a[O][O];
  matrix operator*(matrix b) {
    matrix c;
    for (int i = 0; i <= n * 2; ++i)
      for (int j = 0; j <= n * 2; ++j) {
        c.a[i][j] = 0;
        for (int k = 0; k <= n * 2; ++k)
          c.a[i][j] = max(c.a[i][j], a[i][k] + b.a[k][j]);
        c.a[i][j] /= 2;
      }
    return c;
  }
} A;
double a[O];
int main() {
  cin >> n;
  for (int i = 0; i <= n; ++i) cin >> a[i];
  for (int i = 0; i <= n * 2; ++i) {
    for (int j = 0; j <= n * 2; ++j) {
      if (i + j >= n && (i + n - j & 1) == 0 && i - j <= n && j - i <= n)
        A.a[i][j] = a[(i + n - j) / 2];
      else
        A.a[i][j] = -1e18;
    }
  }
  double ans = 0;
  for (int i = 1; i <= 50; ++i) A = A * A;
  for (int i = 0; i <= n * 2; ++i) ans = max(ans, A.a[0][i]);
  printf("%.10f\n", ans);
  return 0;
}
