在城市屋顶上逃离警察通常很棘手,歹徒必须经过适当的训练。为了跟上当前犯罪领域的 AI 趋势,他们正在开发一种通用的逃生路径计算机模型。
在该模型中,逃生发生的城市区域被建模为一个 3D 网格,由底面为正方形的长方体组成,这些长方体在平坦的地面上形成一个 2D 网格。每个长方体代表一个房屋街区。长方体的顶面称为屋顶。在模型中,所有相邻街区之间的距离都缩减为 0。逃生歹徒的路径被建模为一条折线——即一系列水平和垂直的直线段,其中一段的终点是下一段的起点。基本路径属性如下:
- 路径上的每个点都至少位于一个街区的表面上。
- 路径的任何部分都不在任何街区的内部。
- 路径上任意点的高度都大于或等于该点所在表面所属的所有街区中屋顶的最低高度。
- 路径的起点和终点位于某个街区屋顶的中心。
- 路径中水平线段长度之和尽可能小。
路径上的两个连续线段可能会共享公共点。这源于该路径模拟了人在物理障碍物上移动的真实行为。因此,还需满足以下附加路径规则:
- 设 $P$ 为路径上的一个点。如果存在一个点 $Q$ 在 $P$ 的正上方,且 $Q$ 属于至少两个街区,则点 $Q$ 必须在路径上。
模型中应仔细计算逃生路径的总长度。
输入格式
输入的第一行包含六个正整数 $W, H, S_x, S_y, E_x, E_y$ ($1 \le W \cdot H \le 10^5$, $1 \le S_x, E_x \le W$, $1 \le S_y, E_y \le H$)。$W$ 和 $H$ 是偶数,表示网格底面的尺寸(单位:米),整数 $S_x, S_y$ 表示逃生路径的起始坐标,$E_x, E_y$ 表示终点坐标。
接下来的 $H/2$ 行,每行包含 $W/2$ 个整数,第 $j$ 行的第 $i$ 个整数是对应街区 $T_{i,j}$ 的高度(单位:米,$0 \le T_{i,j} \le 10^3$)。
在模型中,每个网格街区的底面都是 $2 \times 2$ 米的正方形。
输出格式
输出逃生路径的长度。输出长度与精确长度之间的差值必须小于 $10^{-4}$。
样例
输入样例 1
8 8 1 7 7 1 2 3 2 0 2 1 1 2 1 2 0 0 0 0 0 1
输出样例 1
14.485281374238
说明
上图展示了该样例输入及其对应的解。