import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

class Solution {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(
			new InputStreamReader(System.in));
		int t = Integer.parseInt(br.readLine());
		PrintWriter out = new PrintWriter(System.out);
		StringBuilder str = new StringBuilder("");
		for (int h = 1; h <= t; h++)
		{
			str.append("Case #" + h + ": ");
			String[] in = br.readLine().trim().split(" ");
			int n = Integer.parseInt(in[0]);
			long k = Long.parseLong(in[1]);
			long arr[] = new long[n];
			in = br.readLine().trim().split(" ");
			for (int i = 0; i < n; i++) {
				arr[i] = Long.parseLong(in[i]);
			}
			List<Long> diff = new ArrayList<>();
			Arrays.sort(arr);
			for (int i = 1; i < arr.length; i++) {
				long d = arr[i] - arr[i - 1];
				if (d > 0) {
					d--;
				}
				diff.add(d);
			}
			Double p = new Double(0);
			Collections.sort(diff);

			List<Long> ans = new ArrayList<>();
			ans.add(k - arr[n - 1]);
			ans.add(arr[0] - 1);
			for (int j = diff.size() - 1; j >= Math.max(0, diff.size() - 2); j--) {
				ans.add((diff.get(j) + 1) / 2);
			}
			Collections.sort(ans);
			p += ans.get(ans.size() - 1);
			p += ans.get(ans.size() - 2);
			if (diff.size() > 0) {
				Double p2 = (double)diff.get(diff.size() - 1);
				if (p2 > p) {
					p = p2;
				}
			}
			str.append(p / (double)k + "\n");
		}
		out.print(str);
		out.flush();
		br.close();
	}
}