func_code_string: #include <bits/stdc++.h>   #pragma GCC optimization( O3 )   #pragma GCC optimization( unroll-loops )   using namespace std;   template <class T>   using vec = std::vector<T>;   bool __hack = std::ios::sync_with_stdio(false);   auto __hack1 = cin.tie(nullptr);   struct Input {     Input(istream &in) : in(&in) {}     template <class T>     T next() const {       T x;       *in >> x;       return x;     }     int ni() const { return next<int>(); }     istream *in;   };   Input in(cin);   class Output {    private:     ostream *out;     template <typename T>     void printSingle(const T &value) {       *out << value;     }       public:     Output(ostream &out) : out(&out) {}     inline void setPrecision(int d) { *out << fixed << setprecision(d); }     inline void print() {}     template <typename T, typename... Ts>     inline void print(const T &f, const Ts &...args) {       printSingle(f);       if (sizeof...(args) != 0) {         *out <<    ;         print(args...);       }     }     template <typename... Ts>     inline void println(const Ts &...args) {       print(args...);       (*out) <<   n ;     }     template <typename... Ts>     inline void operator()(const Ts &...args) {       println(args...);     }   };   Output out(cout);   namespace template_util {   constexpr int bytecount(uint64_t x) { return x ? 1 + bytecount(x >> 8) : 0; }   template <int N>   struct bytetype {};   template <uint64_t N>   struct minimal_uint : bytetype<bytecount(N)> {};   }  // namespace template_util   double EPS = 1e-10;   bool doubleEqual(double a, double b) { return fabs(a - b) < EPS; }   void solveOne() {     auto n = in.ni();     auto len = in.ni();     vec<int> a(n + 2);     a[0] = 0;     a[n + 1] = len;     for (int i = (1); i <= (n); ++i) a[i] = in.ni();     int i = 0, j = n + 1;     double t = 0;     int s1 = 1, s2 = 1;     double x1 = 0, x2 = len;     out.setPrecision(15);     while (i + 1 < j) {       double d1 = a[i + 1] - x1;       double t1 = d1 / s1;       double d2 = x2 - a[j - 1];       double t2 = d2 / s2;       if (doubleEqual(t1, t2)) {         t += t1;         ++s1;         ++s2;         ++i;         --j;         x1 = a[i];         x2 = a[j];         if (i == j) {           out(t);           return;         }       } else if (t1 < t2) {         t += t1;         ++s1;         ++i;         x1 = a[i];         x2 -= t1 * s2;       } else {         t += t2;         ++s2;         --j;         x2 = a[j];         x1 += t2 * s1;       }     }     double d = x2 - x1;     double s = s1 + s2;     t += d / s;     out(t);   }   void solve(istream &inStream, ostream &outStream) {     in = Input(inStream);     out = Output(outStream);     auto tests = in.ni();     while (tests--) {       solveOne();     }   }   int main() {     solve(cin, cout);     return 0;   }   