#include <bits/stdc++.h>
using namespace std;
double t[2][100005];
double ed, flg[100005];
int T, n;
bool check(double x) {
  int k = upper_bound(flg + 1, flg + 1 + n + 1, x) - flg;
  double tb = t[1][k] + (flg[k] - x) / (n - k + 2);
  double ta = t[0][k - 1] + (x - flg[k - 1]) / (k);
  return ta < tb;
}
int main() {
  scanf("%d", &T);
  while (T--) {
    memset(flg, 0, sizeof(flg));
    memset(t, 0, sizeof(t));
    scanf("%d%lf", &n, &ed);
    for (int i = 1; i <= n; i++) scanf("%lf", &flg[i]);
    flg[n + 1] = ed;
    for (int i = 1; i <= n; i++) {
      t[0][i] = t[0][i - 1] + (flg[i] - flg[i - 1]) / i;
    }
    for (int i = n; i >= 1; i--) {
      t[1][i] = t[1][i + 1] + (flg[i + 1] - flg[i]) / (n - i + 1);
    }
    double l, r;
    l = 0, r = ed;
    while (fabs(r - l) > 1e-6) {
      double mid = (l + r) / 2;
      if (check(mid)) {
        l = mid;
      } else
        r = mid;
    }
    double x = l;
    int k = upper_bound(flg + 1, flg + 1 + n + 1, x) - flg;
    double tb = t[1][k] + (flg[k] - x) / (n - k + 2);
    printf("%lf\n", tb);
  }
}
