#include <bits/stdc++.h>
using namespace std;
const long long inf = 1e18;
const int nax = 1e5 + 200;
const double mpi = acos(-1);
const double eps = 1e-10;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cout << setprecision(20) << fixed;
  int t;
  cin >> t;
  int n;
  long long l;
  while (t--) {
    cin >> n >> l;
    vector<double> a(n + 2);
    a[0] = 0;
    a[n + 1] = l;
    for (int i = 1; i <= (int)n; ++i) {
      cin >> l;
      a[i] = l;
    }
    double acum = 0;
    long long speed = 1;
    vector<double> timeA(n + 2, 0);
    for (int i = 1; i <= (int)n + 1; ++i) {
      timeA[i] = acum + (a[i] - a[i - 1]) / speed;
      ++speed;
      acum = timeA[i];
    }
    acum = 0;
    speed = 1;
    vector<double> timeB(n + 2, 0);
    for (int i = n; i >= 0; --i) {
      timeB[i] = acum + (a[i + 1] - a[i]) / speed;
      ++speed;
      acum = timeB[i];
    }
    double ans = 0;
    bool f = false;
    for (int i = 0; i < (int)n + 2; ++i) {
      if (timeA[i] == timeB[i]) {
        ans = timeA[i];
        f = true;
        break;
      }
      if (timeA[i] >= timeB[i]) {
        int l = i - 1;
        int r = i;
        long long speedB = n + 1 - i + 1;
        long long speedA = i;
        double al = a[l];
        if (timeA[l] == timeB[r]) {
        } else if (timeA[l] < timeB[r]) {
          al += (timeB[r] - timeA[l]) * speedA;
          timeA[l] = timeB[r];
        } else {
          a[r] -= (timeA[l] - timeB[r]) * speedB;
        }
        ans = (a[r] - al);
        ans /= (speedA + speedB);
        ans += timeA[l];
        break;
      }
    }
    cout << ans << '\n';
  }
}
