#include <bits/stdc++.h>
using namespace std;
double t1[100002], t2[100002];
int main() {
  int t, n, l, a[100002], v1, v2, idx, j;
  scanf("%d", &t);
  while (t--) {
    scanf("%d %d", &n, &l);
    v1 = v2 = 1;
    a[0] = 0, a[n + 1] = l;
    t1[0] = t2[n + 1] = 0.0;
    for (int i = 1; i <= n + 1; i++) {
      if (i <= n) scanf("%d", a + i);
      t1[i] = ((double)(a[i] - a[i - 1]) / (double)(v1++)) + t1[i - 1];
    }
    for (int i = n; i >= 0; i--)
      t2[i] = ((double)(a[i + 1] - a[i]) / (double)(v2++)) + t2[i + 1];
    reverse(t2, t2 + n + 2);
    double time1, time2, ans, d1, d2;
    for (int i = 0; i <= n + 1; i++) {
      time1 = t1[i];
      idx = upper_bound(t2, t2 + n + 2, time1) - t2;
      j = n + 1 - idx;
      if (j - i > 1) continue;
      if (i >= j) {
        j = (i == j) ? ++j : i--;
        idx = n + 1 - j;
        time1 = t1[i], time2 = t2[idx];
        d1 = a[i], d2 = a[j], v1 = i + 1, v2 = idx + 1;
        if (time1 >= time2) {
          d2 -= (double)((time1 - time2) * v2);
          ans = ((double)(d2 - d1) / (double)(v1 + v2)) + time1;
        } else {
          d1 += (double)(time2 - time1) * v1;
          ans = ((double)(d2 - d1) / (double)(v1 + v2)) + time2;
        }
        break;
      }
    }
    printf("%.15f\n", ans);
  }
  return 0;
}
