#include <bits/stdc++.h>
using namespace std;
long double cal_time(vector<int> &v, int n, int l) {
  vector<vector<long double>> arr(5, vector<long double>(n + 2, 0));
  long double sa = 1, sb = 1;
  int last = 0;
  arr[2][0] = arr[3][n + 1] = 1;
  arr[4][0] = 0;
  arr[4][n + 1] = l;
  for (int i = 0; i < n; i++) arr[4][i + 1] = v[i];
  for (int i = 1; i < n + 1; i++) {
    arr[0][i] = ((long double)(v[i - 1] - last)) / sa + arr[0][i - 1];
    last = v[i - 1];
    sa += 1;
    arr[2][i] = sa;
  }
  arr[0][n + 1] = ((long double)(l - last)) / sa + arr[0][n];
  arr[2][n + 1] = sa;
  last = l;
  for (int i = n; i >= 1; i--) {
    arr[1][i] = ((long double)(last - v[i - 1])) / sb + arr[1][i + 1];
    last = v[i - 1];
    sb += 1;
    arr[3][i] = sb;
  }
  arr[1][0] = ((long double)last) / sb + arr[1][1];
  arr[3][0] = sb;
  for (int i = 0; i < n + 1; i++) {
    if (arr[0][i] == arr[1][i])
      return arr[0][i];
    else if (arr[0][i + 1] == arr[1][i + 1])
      continue;
    else {
      if (arr[0][i] < arr[1][i] && arr[0][i + 1] > arr[1][i + 1]) {
        long double t =
            (((long double)(arr[4][i + 1] - arr[4][i])) +
             arr[0][i] * arr[2][i] + arr[1][i + 1] * arr[3][i + 1]) /
            (arr[2][i] + arr[3][i + 1]);
        return t;
      } else
        continue;
    }
  }
}
int main() {
  int t;
  cout.precision(15);
  cin >> t;
  int n, l;
  while (t--) {
    cin >> n >> l;
    vector<int> v(n);
    for (int i = 0; i < n; i++) cin >> v[i];
    cout << cal_time(v, n, l) << endl;
  }
  return 0;
}
