移动机器人如今常用于各种工业和研究场所。你负责控制 $n$ 个移动机器人,它们在一个非常长、狭窄且笔直的洞穴中进行探索,该洞穴可以被视为一条直线。移动机器人从附近的环境中收集数据,并凭借履带具有高效的移动能力。你可以通过无线控制系统在控制台上控制这些移动机器人。你所控制的 $n$ 个移动机器人编号为 1 到 $n$,分别标识为机器人 1、机器人 2、……、机器人 $n-1$ 和机器人 $n$。
移动机器人还可以通过简单的红外通信协议相互共享收集到的数据,但这种机器人间的通信只有在所有 $n$ 个移动机器人满足以下非常严格的排列时才能进行:对于所有 $i = 1, 2, \dots, n-1$,机器人 $i$ 和机器人 $i+1$ 之间的距离必须恰好为 $d$,其中 $d$ 是一个给定的正实数,且洞穴中不能有两个机器人在同一位置。由于洞穴非常长、非常窄且非常直,可以将其视为一条向两个方向无限延伸的直线,因此每个移动机器人在洞穴中的位置由一个实数 $x$ 表示。两个移动机器人之间的距离由此计算为它们位置之差的绝对值。
根据移动机器人当前的位置,它们现在需要相互共享数据,你将移动它们以进行机器人间的通信。由于机器人移动缓慢且同时以相同的速度沿洞穴移动,你希望最小化每个机器人需要移动的最大距离,以尽可能减少时间浪费。在移动过程中,假设任意两个机器人在它们处于洞穴中同一位置的瞬间可以安全地相互通过。请注意,当前可能有两个或多个机器人处于洞穴中的同一位置。
给定 $n$ 个移动机器人的当前位置,编写一个程序,计算它们用于机器人间通信的新位置,使得每个机器人移动的最大距离最小,并输出该最小化的最大移动距离。
输入格式
程序从标准输入读取数据。输入包含两行。第一行包含两个整数 $n$ 和 $d$ ($2 \le n \le 1,000,000$ 且 $1 \le d \le 10^{10}$),其中 $n$ 表示你控制的移动机器人数量,$d$ 是机器人进行通信时应保持的距离。每个移动机器人由 1 到 $n$ 的标签标识。第二行包含 $n$ 个整数,每个整数的范围在 $-10^{16}$ 到 $10^{16}$ 之间,依次表示机器人 1、机器人 2、……、机器人 $n$ 的当前位置。
输出格式
程序将结果写入标准输出。输出一行,包含一个保留一位小数的实数,表示移动机器人从当前位置出发进行通信所需移动的最大距离的最小值。
样例
样例输入 1
5 1 1 3 5 7 9
样例输出 1
2.0
样例输入 2
5 1 -10 -1 0 1 2
样例输出 2
4.0
样例输入 3
5 1 1 3 5 9 7
样例输出 3
2.5
样例输入 4
5 1 1 1 1 1 1
样例输出 4
2.0