#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
double a[128];
double b[128];
double c[128];
namespace SimplexMethod {
const double EPS = 1.0E-12;
vector<vector<double> > a;
vector<double> b, c, res;
vector<int> N, kt;
int m;
void pivot(int k, int s, int e) {
  int x = kt[s];
  double p = a[s][e];
  for (int i = 0, _n = (k); i < _n; i++) a[s][i] /= p;
  b[s] /= p;
  N[e] = false;
  for (int i = 0, _n = (m); i < _n; i++)
    if (i != s) {
      b[i] -= a[i][e] * b[s];
      a[i][x] = -a[i][e] * a[s][x];
    }
  for (int j = 0, _n = (k); j < _n; j++)
    if (N[j]) {
      c[j] -= c[e] * a[s][j];
      for (int i = 0, _n = (m); i < _n; i++)
        if (i != s) a[i][j] -= a[i][e] * a[s][j];
    }
  kt[s] = e;
  N[x] = true;
  c[x] = -c[e] * a[s][x];
}
vector<double> doit(int k) {
  vector<double> res;
  while (true) {
    int e = -1, s = -1;
    for (int i = 0, _n = (k); i < _n; i++)
      if (N[i] && c[i] > EPS) {
        e = i;
        break;
      }
    if (e == -1) break;
    for (int i = 0, _n = (m); i < _n; i++)
      if (a[i][e] > EPS && (s == -1 || b[i] / a[i][e] < b[s] / a[s][e])) s = i;
    if (s == -1) return vector<double>();
    pivot(k, s, e);
  }
  res.resize(k, 0);
  for (int i = 0, _n = (m); i < _n; i++) res[kt[i]] = b[i];
  return res;
}
vector<double> simplex(vector<vector<double> > _A, vector<double> _b,
                       vector<double> _c) {
  a = _A;
  b = _b;
  c = _c;
  m = (int)(a).size();
  int n = (int)(a[0]).size();
  int k = n + m + 1;
  c.resize(n + m);
  kt.resize(m);
  N = vector<int>(k, true);
  for (int i = 0, _n = (m); i < _n; i++) {
    a[i].resize(k);
    a[i][n + i] = 1;
    a[i][k - 1] = -1;
    kt[i] = n + i;
    N[kt[i]] = false;
  }
  int s = min_element((b).begin(), (b).end()) - b.begin();
  if (b[s] < -EPS) {
    c = vector<double>(k, 0);
    c[k - 1] = -1;
    pivot(k, s, k - 1);
    res = doit(k);
    if (res[k - 1] > EPS) return vector<double>();
    for (int i = 0, _n = (m); i < _n; i++)
      if (kt[i] == k - 1)
        for (int j = 0, _n = (k - 1); j < _n; j++)
          if (N[j] && (a[i][j] < -EPS || EPS < a[i][j])) {
            pivot(k, i, j);
            break;
          }
    c = _c;
    c.resize(k, 0);
    for (int i = 0, _n = (m); i < _n; i++)
      for (int j = 0, _n = (k); j < _n; 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 SimplexMethod
int n;
double p[128];
int main() {
  scanf("%d", &n);
  for (int i = 0, _n = (n + 1); i < _n; i++) scanf("%lf", p + i);
  vector<double> c(p, p + n + 1);
  vector<vector<double> > a(2);
  vector<double> b(2);
  for (int i = 0, _n = (n + 1); i < _n; i++) {
    a[0].push_back(2 * i - n);
    b[0] = 0;
    a[1].push_back(1.0);
    b[1] = 1.0;
  }
  double res = 0;
  vector<double> ans = SimplexMethod::simplex(a, b, c);
  for (int i = 0, _n = (n + 1); i < _n; i++) res += ans[i] * p[i];
  printf("%.12lf\n", res);
  return 0;
}
