#include <bits/stdc++.h>
using namespace std;
const int sto = 103;
char c;
int n, tn;
long double best;
const double EPS = 1e-9;
namespace Simplex {
vector<vector<long double> > A;
vector<long double> b, c, res;
vector<int> kt, N;
int m;
inline void pivot(int k, int l, int e) {
  int x = kt[l];
  long double p = A[l][e];
  for (int i = 0; i < int(k); ++i) A[l][i] /= p;
  b[l] /= p;
  N[e] = 0;
  for (int i = 0; i < int(m); ++i)
    if (i != l) b[i] -= A[i][e] * b[l], A[i][x] = A[i][e] * -A[l][x];
  for (int j = 0; j < int(k); ++j)
    if (N[j]) {
      c[j] -= c[e] * A[l][j];
      for (int i = 0; i < int(m); ++i)
        if (i != l) A[i][j] -= A[i][e] * A[l][j];
    }
  kt[l] = e;
  N[x] = 1;
  c[x] = c[e] * -A[l][x];
}
vector<long double> doit(int k) {
  vector<long double> res;
  long double best;
  while (1) {
    int e = -1, l = -1;
    for (int i = 0; i < int(k); ++i)
      if (N[i] && c[i] > 1E-16) {
        e = i;
        break;
      }
    if (e == -1) break;
    for (int i = 0; i < int(m); ++i)
      if (A[i][e] > 1E-16 && (l == -1 || best > b[i] / A[i][e]))
        best = b[l = i] / A[i][e];
    if (l == -1) return vector<long double>();
    pivot(k, l, e);
  }
  res.resize(k, 0);
  for (int i = 0; i < int(m); ++i) res[kt[i]] = b[i];
  return res;
}
vector<long double> simplex(vector<vector<long double> > &AA,
                            vector<long double> &bb, vector<long double> &cc) {
  int n = AA[0].size(), k;
  m = AA.size();
  k = n + m + 1;
  kt.resize(m);
  b = bb;
  c = cc;
  c.resize(n + m);
  A = AA;
  for (int i = 0; i < int(m); ++i) {
    A[i].resize(k);
    A[i][n + i] = 1;
    A[i][k - 1] = -1;
    kt[i] = n + i;
  }
  N = vector<int>(k, 1);
  for (int i = 0; i < int(m); ++i) N[kt[i]] = 0;
  int pos = min_element(b.begin(), b.end()) - b.begin();
  if (b[pos] < -1E-16) {
    c = vector<long double>(k, 0);
    c[k - 1] = -1;
    pivot(k, pos, k - 1);
    res = doit(k);
    if (res[k - 1] > 1E-16) return vector<long double>();
    for (int i = 0; i < int(m); ++i)
      if (kt[i] == k - 1)
        for (int j = 0; j < int(k - 1); ++j)
          if (N[j] && (A[i][j] < -1E-16 || 1E-16 < A[i][j])) {
            pivot(k, i, j);
            break;
          }
    c = cc;
    c.resize(k, 0);
    for (int i = 0; i < int(m); ++i)
      for (int j = 0; j < int(k); ++j)
        if (N[j]) c[j] -= c[kt[i]] * A[i][j];
  }
  res = doit(k - 1);
  if (!res.empty()) res.resize(n);
  return res;
}
};  // namespace Simplex
int main() {
  scanf("%d", &n);
  vector<vector<long double> > a;
  a.resize(2);
  vector<long double> b, p;
  for (int i = 0; i <= (int)n; ++i) {
    long double x;
    cin >> x;
    p.push_back(x);
    a[0].push_back(1);
    a[1].push_back(i);
  }
  b.push_back(1);
  b.push_back((long double)n / 2);
  if (0) cout << "start" << endl;
  vector<long double> ans = Simplex::simplex(a, b, p);
  long double out = 0;
  for (int i = 0; i <= (int)n; ++i) {
    if (0) cout << ans[i] << endl;
    out += p[i] * ans[i];
  }
  cout << out;
  if (0) {
    scanf("%c", &c);
    scanf("%c", &c);
  }
  return 0;
}
