#include <bits/stdc++.h>
namespace Main {
namespace Source {
static inline const double max(const double a, const double b) {
  return a < b ? b : a;
}
}  // namespace Source
using namespace Source;
enum { N = 10000 };
static short unsigned int n;
static unsigned int p[N + 1];
static double q[N + 1];
static double c;
static unsigned int x;
static double f[N + 1], g[N + 1], h[N + 1];
static inline const void main() {
  scanf("%hu%u", &n, &x), c = x / 1e6;
  for (short unsigned int i(0); i <= n; ++i)
    scanf("%u", &p[i]), q[i] = p[i] / 1e6;
  for (short unsigned int i(0); i < n; ++i) {
    if (not(h[i] = q[i] * (n - i) / n + q[i + 1] * (i + 1) / n)) continue;
    g[i] = q[i + 1] * (i + 1) / (q[i] * (n - i) + q[i + 1] * (i + 1)),
    f[i] = max(g[i] - c, 0);
  }
  for (short unsigned int i(n - 2); i < n; --i)
    for (short unsigned int j(0); j <= i; ++j) {
      const double pr(h[j + 1] * (j + 1) / (i + 1)),
          pb(h[j] * (i + 1 - j) / (i + 1));
      if (not(h[j] = pr + pb)) continue;
      g[j] = (pr * (g[j + 1] * (n - i - 1) + 1) + pb * g[j] * (n - i - 1)) /
             (n - i) / h[j],
      f[j] = max(g[j] * (f[j + 1] + 1) + (1 - g[j]) * f[j] - c, 0);
    }
  printf("%.12lf\n", f[0]);
}
}  // namespace Main
signed int main() {
  Main::main();
  return 0;
}
