小蓝鱼(Little Cyan Fish)正在玩一些瓶子。在他的桌子上,有 $n + 2$ 个足够大的容器,编号为 $0, 1, \dots, n + 1$。
最初,容器 $0$ 含有质量为 $\frac{X}{1000}$ 的水,而容器 $n + 1$ 是空的。对于每个 $i = 1, \dots, n$,容器 $i$ 含有总质量为 $1$ 的均匀混合物,其中含有 $\frac{E_i}{1000}$ 的乙醇和 $1 - \frac{E_i}{1000}$ 的水。
小蓝鱼可以重复进行以下操作任意(有限)次(可能为零次):
- 选择一个下标 $i$($0 \le i \le n$)和一个实数 $x > 0$,使得:如果 $i \ge 1$,容器 $i$ 当前含有的混合物质量至少为 $1 + x$(然而,对于 $i = 0$,我们要求将条件中的 $1 + x$ 替换为 $x$)。
- 将质量为 $x$ 的混合物从容器 $i$ 倒入容器 $i + 1$,然后搅拌容器 $i + 1$ 的内容物,使得到的混合物变得均匀。
是的……我知道你已经厌倦了又一个构造题。因此,小蓝鱼为你准备了这份礼物。他要求你求出在进行有限次操作后,最终可能留在容器 $n + 1$ 中的乙醇质量的上确界(即最小上界,不一定能达到)。这听起来不错吧?
输入格式
单个输入文件中包含多组测试数据。输入的第一行包含一个整数 $T$($1 \le T \le 1000$),表示测试数据的组数。对于每组测试数据:
第一行包含两个整数 $n$ 和 $X$($1 \le n \le 20$,$1 \le X \le 1000$)。
第二行包含 $n$ 个整数 $E_1, E_2, \dots, E_n$($0 \le E_i \le 1000$)。
输出格式
对于每组测试数据,输出一行,包含一个实数,表示操作后容器 $n + 1$ 中乙醇质量的上确界。
如果你的答案与标准答案的绝对误差或相对误差不超过 $10^{-9}$,则视为正确。具体来说,假设你的输出为 $x$,评测答案为 $y$,当且仅当 $\frac{|x-y|}{\max(1, |y|)} \le 10^{-9}$ 时,你的输出才会被接受。
样例
输入 1
2 1 900 1000 2 345 678 910
输出 1
0.59343034025940088812 0.29768625581348055032
输入 2
1 3 210 406 364 961
输出 2
0.18956125995075295122
说明
例如,对于第一组测试数据,你可以通过执行以下操作,使最终留在容器 2 中的乙醇质量等于 $\frac{23}{45}$:
- 将质量为 $0.5$ 的混合物从容器 $0$ 倒入容器 $1$。
- 将质量为 $0.4$ 的混合物从容器 $1$ 倒入容器 $2$。
- 将质量为 $0.4$ 的混合物从容器 $0$ 倒入容器 $1$。
- 将质量为 $0.5$ 的混合物从容器 $1$ 倒入容器 $2$。
事实上,通过合理的操作,你可以达到约 $0.593\dots$ 的质量。