小约翰正计划和他的朋友去博物馆。他们约定在公交车站见面。约翰是一个非常守时的人,所以他到得太早了。外面很冷,所以约翰决定在公交车上等他的同事。不幸的是,所有的公交车在车站都只停留一会儿,所以约翰决定坐上一辆公交车,坐几站路,然后再换乘一辆回车站的公交车。由于天气不好,约翰希望在外面待的时间尽可能短。为了实现这个目标,他希望最小化他在车站等车的时间、回到车站后等朋友的时间以及换乘公交车时等待的时间之和。正如我们所知,约翰非常守时,所以他不想错过与朋友的会面。约翰找到了所有公交车的详细时刻表,这将使他能够规划行程。然而,他不太擅长数学,所以他请求你帮他解决这个问题。
编写一个程序:
- 从标准输入读取约翰和他朋友到达的时间以及公交车时刻表,
- 计算约翰在外面等待朋友所需的最短时间,
- 将结果写入标准输出。
输入格式
标准输入的第一行包含五个整数:$ t_{1} $,$ t_{2} $,$ m $,$ n_{1} $,$ n_{2}$($0 ≤ t_{1} ≤ t_{2} ≤ 1\,000\,000\,000$,$2 ≤ m ≤ 1\,000$,$ n_{1}, n_{2} ≥ 1$,$ m \times (n_{1} + n_{2}) ≤ 1\,000\,000$),用空格分隔。这些数字分别代表:约翰到达公交车站的时刻、约翰的朋友到达公交车站的时刻、路线上的公交车站数量(包括公交车站本身)、从公交车站出发的公交车数量以及到达车站的公交车数量。接下来的 $ m $ 行包含连续公交车站的时刻表。第一个公交车站是车站本身。从车站出发的公交车停靠在 $1, 2, \ldots, m $ 站。到达车站的公交车停靠在 $ m, \ldots, 2, 1 $ 站。每辆公交车在到达第一站或第 $ m $ 站后,即结束当天的行程。第 $ i $ 个公交车站的时刻表由 $n_1+n_2$ 个整数 $0 ≤ x_{ij} ≤ 1\,000\,000\,000$ 组成,其中 $ x_{ij} $ 表示第 $ j $ 辆公交车的到达/出发时间。这些数字在每一行内用空格分隔。对于 $ j ≤ n_{1} $,该数字与从公交车站出发的公交车有关;对于 $ j > n_{1} $,则与到达车站的公交车有关。每辆公交车在每个站点的到达和出发都在同一时间单位内完成。每辆公交车在任意两个连续公交车站之间行驶至少需要一个时间单位。约翰可以在他到达相应公交车站的时间等于或早于公交车出发时间的情况下搭乘公交车。特别地,如果公交车 A 和公交车 B 到达某公交车站的时刻分别为 $ t_{a} $ 和 $ t_{b} $,则在 $ t_{a} ≤ t_{b} $ 的条件下,可以从公交车 A 换乘到公交车 B。
输出格式
标准输出的第一行也是唯一一行应包含一个整数,即约翰在外面等待朋友所需的最短时间。如果没有公交车允许约翰执行计划的行程,你应该假设约翰将把所有时间都花在车站等待。
样例
输入 1
0 10 3 1 2 0 9 10 3 4 8 4 3 7
输出 1
2
说明 1
在最小化约翰在外面等待时间的方案中,他需要:在零时刻搭乘第一辆公交车,在第二个公交车站下车,在第四个时间单位搭乘第二辆公交车,并在第九个时间单位回到车站。