#include <bits/stdc++.h>
using namespace std;
struct flag {
  double d;
  double t1, t2, v1, v2;
};
int t;
int main() {
  cin >> t;
  while (t--) {
    int n, l;
    cin >> n >> l;
    vector<flag> v(n + 2);
    v[0].d = 0;
    v[0].t1 = 0;
    v[0].v1 = 1;
    v[++n].d = l;
    v[n].t2 = 0;
    v[n].v2 = 1;
    for (int i = 1; i < n; ++i) cin >> v[i].d;
    for (int i = 1; i <= n; ++i) {
      v[i].v1 = i + 1;
      v[i].t1 = v[i - 1].t1 + (v[i].d - v[i - 1].d) / v[i - 1].v1;
    }
    for (int i = n - 1; i >= 0; --i) {
      v[i].v2 = n - i + 1;
      v[i].t2 = v[i + 1].t2 + (v[i + 1].d - v[i].d) / v[i + 1].v2;
    }
    double sol = 0;
    for (int i = 0; i <= n; ++i) {
      if (v[i].t1 == v[i].t2) sol = v[i].t1;
    }
    if (sol) {
      cout << sol << "\n";
      continue;
    }
    for (int i = 0; i < n && (!sol); ++i) {
      double t = ((v[i + 1].d - v[i].d) + v[i].t1 * v[i].v1 +
                  v[i + 1].t2 * v[i + 1].v2) /
                 (v[i].v1 + v[i + 1].v2);
      double x = (t - v[i].t1) * v[i].v1 + v[i].d;
      if (v[i].d < x && x < v[i + 1].d) sol = t;
    }
    cout << fixed << setprecision(10) << sol << "\n";
  }
}
