#include <bits/stdc++.h>
int dx4[] = {0, 0, -1, 1};
int dy4[] = {-1, 1, 0, 0};
bool valid(int r, int c, int x, int y) {
  if (x >= 1 && x <= r && y >= 1 && y <= c) return 1;
  return 0;
}
using namespace std;
double l;
int n;
double a[100000 + 2];
bool cal(double x) {
  double tot = 0.0;
  double pos = 1.0;
  double val = x;
  for (int i = 1; i <= n + 1; i++) {
    if ((a[i] - a[i - 1]) / pos <= x) {
      tot = a[i];
      x -= (a[i] - a[i - 1]) / pos;
      pos++;
    } else {
      tot += (x * pos);
      x = 0;
      break;
    }
  }
  x = val;
  double tot1 = l;
  double pos1 = 1.0;
  for (int i = n; i >= 0; i--) {
    if ((a[i + 1] - a[i]) / pos1 <= x) {
      x -= (a[i + 1] - a[i]) / pos1;
      pos1++;
      tot1 = a[i];
    } else {
      tot1 -= (x * pos1);
      x = 0;
      break;
    }
  }
  if (tot >= tot1)
    return true;
  else
    return false;
}
int main() {
  int t;
  cin >> t;
  for (int cs = 1; cs <= t; cs++) {
    cin >> n;
    cin >> l;
    for (int i = 1; i <= n; i++) cin >> a[i];
    double low = 0;
    double high = l;
    a[0] = 0;
    a[n + 1] = l;
    bool flag = 0;
    double ans = 0;
    int tt = 60;
    while (tt) {
      double mid = (low + high) / 2.0;
      flag = cal(mid);
      if (flag == true) {
        ans = mid;
        high = mid;
      } else {
        low = mid;
      }
      tt--;
    }
    printf("%.10f\n", ans);
  }
  return 0;
}
