#include <iostream>
#include<bits/stdc++.h>
using namespace std;
#define endl "\n"
#define int long long
#define cout(x) cout<<(x)<<endl
#define fastio ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
int T = 1;
void solve(){
int n,l; cin>>n>>l;
vector<double> a(n);
for(int i=0;i<n;i++) cin>>a[i];
double ans = -1;
double high = l; double low = 0;
while(low<=high){
double mid = (low+high)/2;
double posa = 0; double posb = l;
double va = 1; double vb = 1;
double temp = mid;
int i = 0;
while(temp){
if(i>=n){
posa += temp*va;
temp = 0;
break;
}
double gg = (a[i]-posa)/va;
if(gg<=temp){
posa = a[i];
temp-=gg;
va++;
i++;
}
else{
posa+=temp*va;
temp = 0;
}
}
i = n-1; temp = mid;
while(temp){
if(i<0){
posb -= temp*vb;
temp = 0;
break;
}
double gg = (posb-a[i])/vb;
if(gg<=temp){
posb = a[i];
temp-=gg;
vb++;
i--;
}
else{
posb-=temp*vb;
temp = 0;
}
}
if(abs(posa-posb)<=1e-5){
ans = mid;
break;
}
else if(posa<posb){
low = mid;
}
else high = mid;
}
cout<<fixed<<setprecision(16)<<ans<<endl;
}
int32_t main(){
fastio;
cin>>T;
while(T--){
solve();
}
return 0;
}
1487A - Arena | 1520D - Same Differences |
376A - Lever | 1305A - Kuroni and the Gifts |
1609A - Divide and Multiply | 149B - Martian Clock |
205A - Little Elephant and Rozdil | 1609B - William the Vigilant |
978B - File Name | 1426B - Symmetric Matrix |
732B - Cormen --- The Best Friend Of a Man | 1369A - FashionabLee |
1474B - Different Divisors | 1632B - Roof Construction |
388A - Fox and Box Accumulation | 451A - Game With Sticks |
768A - Oath of the Night's Watch | 156C - Cipher |
545D - Queue | 459B - Pashmak and Flowers |
1538A - Stone Game | 1454C - Sequence Transformation |
165B - Burning Midnight Oil | 17A - Noldbach problem |
1350A - Orac and Factors | 1373A - Donut Shops |
26A - Almost Prime | 1656E - Equal Tree Sums |
1656B - Subtract Operation | 1656A - Good Pairs |