Robert 正在参加 CEOI 2024。他几乎已经完成了当天最难的一道题的解法,不仅如此,他确信这道题能拿 100 分!但有一个小问题:他打错了一个字!更糟糕的是,他自 2008 年以来一直使用的心爱鼠标似乎终于坏了,完全没有反应。因此,他必须使用键盘上的方向键导航到错别字处。
Robert 的程序有 $N$ 行,长度分别为 $l_1, l_2, \dots, l_N$。Robert 的程序总是以一个空行结束,因此 $l_N = 0$。光标可以放置在两个字符之间,也可以放置在行的开头或结尾。因此,第 $i$ 行有 $l_i + 1$ 个可能的光标位置(称为列),编号从 $1$ 到 $l_i + 1$。例如,光标位于第 $2$ 行第 $6$ 列的样子如下:
Robert 想要将光标从第 $s_l$ 行第 $s_c$ 列移动到第 $e_l$ 行第 $e_c$ 列。他想知道完成此操作所需的最少按键次数。
水平方向键很简单。按下 left 会将光标移动到前一列,除非光标位于行首,这种情况下它会移动到上一行的末尾。同样,按下 right 会将光标移动到下一列,或者如果光标位于行尾,则移动到下一行的开头。
在文件最开头按下 left 或在文件最末尾按下 right 不会有任何效果。
垂直方向键稍微复杂一些。按下 up 会将光标移动到上一行,按下 down 会将光标移动到下一行,且不改变列号。但是,如果这会导致光标超出新行的末尾,光标将跳转到该行的末尾。
如果按下 up 或 down 会使光标移动到不存在的行,则光标不会移动。
输入格式
第一行包含整数 $N$ —— Robert 程序中的行数。 第二行包含两个空格分隔的整数 $s_l$ 和 $s_c$ —— 初始光标位置。 同样,第三行包含两个整数 $e_l$ 和 $e_c$ —— 目标光标位置。 第四行包含 $N$ 个空格分隔的整数 $l_1, l_2, \dots, l_N$ —— 每一行的长度。
输出格式
你的程序应输出一行,包含一个整数 —— 将光标从 $(s_l, s_c)$ 移动到 $(e_l, e_c)$ 所需的最少按键次数。
样例
样例 1
输入:
5 3 1 2 8 7 10 9 9 0
输出:
3
样例 2
输入:
5 1 20 3 25 25 10 40 35 0
输出:
16
数据范围
- $1 \le N \le 10^6$
- $0 \le l_i \le 10^9$ (对于每个 $1 \le i \le N$)
- $l_N = 0$
- $1 \le s_l, e_l \le N$
- $1 \le s_c \le l_{s_l} + 1$
- $1 \le e_c \le l_{e_l} + 1$
子任务
- (5 分) $N \le 2$
- (14 分) $N \le 1\,000, l_i \le 5\,000$ (对于每个 $1 \le i \le N$)
- (26 分) $N \le 1\,000$
- (11 分) $l_i = l_j$ (对于每个 $1 \le i, j \le N - 1$)
- (44 分) 无附加限制