#include <bits/stdc++.h>
using namespace std;
inline int qr() {
  int f = 0, fu = 1;
  char c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') fu = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    f = (f << 3) + (f << 1) + c - 48;
    c = getchar();
  }
  return f * fu;
}
inline int fgn(double x) { return fabs(x) < 1e-8 ? 0 : (x < 0 ? -1 : 1); }
const int N = 1e5 + 10;
int T;
double pre[N], suf[N];
int pv[N], sv[N];
int a[N], n, l;
int main() {
  T = qr();
  while (T--) {
    n = qr(), l = qr();
    for (register int i = 1; i <= n; ++i) a[i] = qr();
    a[n + 1] = l, suf[n + 1] = 0;
    pv[0] = sv[n + 1] = 1;
    for (register int i = 1; i <= n + 1; ++i) {
      pre[i] = pre[i - 1] + (1.0 * (a[i] - a[i - 1])) / (i * 1.0);
      pv[i] = i + 1;
    }
    for (register int i = n; i >= 0; --i) {
      suf[i] = suf[i + 1] + (1.0 * (a[i + 1] - a[i])) / ((n - i + 1) * 1.0);
      sv[i] = n - i + 2;
    }
    int L = 0;
    while (L <= n + 1) {
      if (fgn(pre[L] - suf[L]) >= 0) break;
      L++;
    }
    if (fgn(pre[L] - suf[L]) == 0) {
      printf("%.12lf\n", pre[L]);
      continue;
    }
    printf("%.12lf\n", ((a[L] - a[L - 1]) * 1.0 + pv[L - 1] * pre[L - 1] +
                        (sv[L]) * suf[L]) /
                           double(pv[L - 1] + sv[L]));
  }
  return 0;
}
