#include <bits/stdc++.h>
using namespace std;
deque<int> v;
long double n, s;
bool f(long double time) {
  long double timez = time;
  long double dst1 = 0, speed = 1, flag = 0;
  while (true) {
    if (flag == v.size()) {
      dst1 = s;
      break;
    }
    if (((v[flag] - dst1) / speed) < time) {
      time -= (v[flag] - dst1) / speed;
      speed++;
      dst1 = v[flag];
      flag++;
    } else {
      dst1 += (time * speed);
      time = 0;
      speed++;
      break;
    }
  }
  v.push_front(0);
  v.pop_back();
  time = timez;
  long double dst2 = s, speed2 = 1, flag2 = v.size() - 1;
  while (true) {
    if (flag2 == -1) {
      dst2 = 0;
      break;
    }
    if (((dst2 - v[flag2]) / speed2) < time) {
      time -= (dst2 - v[flag2]) / speed2;
      speed2++;
      dst2 = v[flag2];
      flag2--;
    } else {
      dst2 -= (time * speed2);
      break;
    }
  }
  long double e = dst1;
  long double e2 = dst2;
  v.pop_front();
  v.push_back(s);
  return dst1 > dst2;
}
int main() {
  cout << fixed << setprecision(8);
  int tt;
  cin >> tt;
  while (tt--) {
    cin >> n >> s;
    v.resize(n);
    for (int i = 0; i < n; i++) cin >> v[i];
    v.push_back(s);
    long double l = 0, r = 1000000000, EPS = 0.0000001;
    while (l + EPS < r) {
      long double m = (l + r) / 2;
      if (f(m))
        r = m;
      else
        l = m;
    }
    f(329737645.750000000000000);
    cout << l << '\n';
  }
}
