由于一次不幸的时间旅行事故,欧几里得发现自己正漫步在现代曼哈顿的街道上。令他沮丧的是,他发现人们居然在使用所谓的“曼哈顿距离”来测量距离!
“这根本不是最短路径,我可以证明这一点!”他大喊道。路人并不理会这个疯子。
曼哈顿的结构是由两个轴 $A$ 和 $B$ 的笛卡尔积形成的网格。沿轴 $A$ 的正方向向右,沿轴 $B$ 的正方向向下。
每个轴都被划分为交替出现的线段:
- 住宅区:这些是无法穿过的实心区域。
- 街道(或大道):住宅区之间的间隙,允许在其中移动。
线段从 1 开始编号,且模式交替出现:奇数索引的线段是住宅区,偶数索引的线段是间隙。线段的总数总是奇数。
此外,任何街道或大道的宽度都不会超过任何住宅区的任何维度。形式上,在两个轴的所有线段中,奇数索引的最小线段长度不小于偶数索引的最大线段长度。
我们定义一个点 $(x, y)$ 如果同时位于水平住宅线段(来自轴 $A$)和垂直住宅线段(来自轴 $B$)内,则该点位于建筑物内部。这些建筑物区域是不可通行的。你可以在其他地方自由移动,只要你的路径不穿过任何建筑物的内部。允许接触建筑物的边缘或角落。
欧几里得想要从网格的左上角走到右下角,且只能在开放区域移动,并使用欧几里得距离。请帮他找到最短的可能路径!
输入格式
每个测试输入包含多个测试用例。第一行包含测试用例的数量 $t$ ($1 \le t \le 100$)。接下来是测试用例的描述。
每个测试用例的描述如下:
- 第一行包含两个整数 $n$ 和 $m$ ($1 \le n, m \le 2000$):分别表示沿水平轴和垂直轴的住宅线段数量。
- 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$ ($1 \le a_i \le 10^6$):水平住宅线段的宽度。
- 第三行包含 $n - 1$ 个整数 $b_1, b_2, \dots, b_{n-1}$ ($1 \le b_i \le 10^6$):住宅区之间的水平间隙(街道)的宽度。为了输入格式的一致性,我们在该行的末尾添加了一个额外的零。它应该被读取并忽略。
- 第四行包含 $m$ 个整数 $c_1, c_2, \dots, c_m$ ($1 \le c_i \le 10^6$):垂直住宅线段的高度。
- 第五行包含 $m - 1$ 个整数 $d_1, d_2, \dots, d_{m-1}$ ($1 \le d_i \le 10^6$):住宅区之间的垂直间隙(大道)的高度。为了输入格式的一致性,我们在该行的末尾添加了一个额外的零。它应该被读取并忽略。
在每个测试用例中,$\max(b_1, \dots, b_{n-1}, d_1, \dots, d_{m-1}) \le \min(a_1, \dots, a_n, c_1, \dots, c_m)$。
所有测试用例中 $n \cdot m$ 的总和不超过 $4 \cdot 10^6$。
输出格式
对于每个测试用例,输出一个实数:从左上角走到右下角且不穿过任何建筑物内部所需的最短欧几里得距离。
你的答案与标准答案的绝对误差或相对误差不能超过 $10^{-9}$。
样例
输入样例 1
2 1 1 1 0 3 0 2 2 3 3 2 0 4 4 3 0
输出样例 1
4.0000000000 15.7147766421
说明
你可以从下方看到两个样例测试用例的示意图。