#include <bits/stdc++.h>
using namespace std;
int n;
double P[1000];
double getmax(double x, double y) {
  if (x > y) return x;
  return y;
}
double getabs(double x) {
  if (x > 0) return x;
  return -x;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i <= n; ++i) scanf("%lf", &P[i]);
  double ans = 0;
  for (int x = 0; x <= n; ++x)
    for (int y = 0; y <= n; ++y) {
      int dx = n - 2 * x, dy = n - 2 * y;
      if (dx < 0 && dy < 0) continue;
      double res;
      if (dx == 0 && dy >= 0 || dy == 0 && dx >= 0)
        res = getmax(P[x], P[y]);
      else if (dx == 0 && dy < 0 || dy == 0 && dx < 0)
        continue;
      else
        res = (P[x] * getabs(dy) + P[y] * getabs(dx)) /
              (double)(getabs(dx) + getabs(dy));
      ans = getmax(ans, res);
    }
  printf("%.10f\n", ans);
  return 0;
}
