一名登山者站在一座高度为 $H$ 米的陡峭山顶上。他有一根绳子,想要下到山脚。山上共有 $n$ 个岩架,第 $i$ 个岩架距离山脚 $a_i$ 米。登山者可以站在任何一个岩架上或山顶,但不能站在山上的其他任何地方。
登山者利用绳子从一个岩架移动到另一个岩架。他可以将绳子系在岩架上,下降,然后站在岩架上时将绳子切断。在这种情况下,被切断的那部分绳子会永远悬挂在那里,因为下到下方后无法将其解开,但剩余的绳子仍留在登山者手中,他可以继续使用。
在悬挂于绳子上时,登山者可以在他握住的地方将绳子切断,并在末端打一个环,然后将剩余的绳子穿过这个环(这也可以在站在岩架上时完成)。之后,他可以利用对折后的双股绳子下降,并在下降后将其拉回。请参考“说明”部分以获得更好的理解。
求登山者从山顶到达山脚所需的最短绳子长度。你可以假设绳子无限细,且切割或打结造成的材料损失可忽略不计(为零)。
输入格式
第一行包含两个空格分隔的整数 $n$ 和 $H$ ($0 \le n \le 10^6, 0 \le H \le 10^9$),分别表示岩架的数量和山的高度(单位:米)。
下一行包含 $n$ 个空格分隔的整数 $a_1, \dots, a_n$,表示岩架的高度 ($H > a_1 > \dots > a_n > 0$)。
输出格式
输出一个实数,表示所需的绳子长度,要求绝对误差或相对误差不超过 $10^{-6}$。
样例
输入 1
1 100 50
输出 1
75
输入 2
2 3 2 1
输出 2
1.75
说明
考虑第一组样例中下山的几种可能方式。
第一种方式是直接使用 100 米的绳子从山顶下到山脚。第二种方式是在山顶打一个环,将双股绳子穿过环,下到岩架处,然后回收绳子。重复此过程从岩架下到地面,我们得到了另一种使用 100 米绳子下山的方法。
如果我们结合这两种方法,可以做得更好,仅用 75 米的绳子就能下山。让我们从山顶悬挂 25 米的单股绳子,在那里打一个环,然后用双股绳子下到岩架。这样我们损失了最初的 25 米,但节省了我们用于双股下降的 50 米。这 50 米正好足够以单股绳子的方式下到地面。