在堆场平坦的地面上,放置着若干个沉重的金属圆柱体,它们的直径可能不同,但长度相同。这些圆柱体的末端对齐,且轴线方向完全一致。
我们希望尽可能减小它们所占的面积。由于圆柱体太重无法抬起,但滚动它们并不困难,因此我们决定从两侧用两堵高墙挤压这些圆柱体。
你的任务是计算当圆柱体被尽可能挤压时,两堵墙之间的最小可能距离。圆柱体和墙壁可以相互接触。圆柱体不能从地面抬起,因此它们的顺序不能改变。
图 B.1. 两墙之间的圆柱体
输入格式
输入包含一组测试数据。第一行包含一个整数 $N$ ($1 \le N \le 500$),表示圆柱体的数量。第二行包含 $N$ 个不超过 $10,000$ 的正整数,表示从一侧到另一侧圆柱体的半径。
输出格式
输出当两堵墙完全挤压圆柱体时,两墙之间的距离。结果的误差不应超过 $0.0001$。
样例
样例输入 1
2 10 10
样例输出 1
40.00000000
样例输入 2
2 4 12
样例输出 2
29.85640646
样例输入 3
5 1 10 1 10 1
样例输出 3
40.00000000
样例输入 4
3 1 1 1
样例输出 4
6.00000000
样例输入 5
2 5000 10000
样例输出 5
29142.13562373
以下图形对应样例 1、2 和 3。
图 B.2. 样例 1
图 B.3. 样例 2
图 B.4. 样例 3