一只青蛙生活在一个美丽的湖泊中。湖面上漂浮着许多排成一行的荷叶,这些荷叶可以用数轴上的闭区间来表示。青蛙喜欢待在荷叶上,并在它们之间移动。
给定数轴($x$ 轴)上的 $n$ 个闭区间,代表荷叶,青蛙最初位于某个区间 $I_0$ 上。如果两个区间有重叠,青蛙就可以从一个区间 $I$ 移动到另一个区间 $J$。两个区间重叠意味着它们共享一个公共点。因此,青蛙可以通过重叠的区间进行移动。当青蛙通过重叠的区间向右(或向左)移动时,它可能会到达一个区间 $H$,此时它无法再从 $H$ 的右(或左)端点继续向右(或向左)移动。在这种情况下,如果存在满足条件的区间,青蛙可以跳跃到区间 $K$。该区间 $K$ 的左(或右)端点在所有左(或右)端点大于(或小于)$H$ 的右(或左)端点的区间中是最小(或最大)的。此时,跳跃长度定义为 $H$ 的右(或左)端点与 $K$ 的左(或右)端点之间的距离。参见图 F.1。
图 F.1 跳跃长度
给定一个包含 $k$ 个区间的序列 $I_1, I_2, \dots, I_k$,青蛙需要按照顺序从初始区间 $I_0$ 开始访问这些区间。在这次旅行中,青蛙必须在必要时进行跳跃。
例如,在图 F.2 中,给出了八个区间 $[1, 8], [2, 4], [5, 11], [13, 15], [15, 17], [16, 18], [19, 22]$ 和 $[20, 22]$,编号从 1 到 8。青蛙最初位于区间 1。需要按顺序访问的区间序列为 3, 7, 4, 6, 3。青蛙从区间 1 移动到 3 时无需跳跃,从 3 移动到 7 时进行了两次跳跃(即 $3 \to 4$ 和 $6 \to 7$),总跳跃长度为 3。在此过程中,青蛙经过了区间 4。尽管如此,它仍需在访问区间 7 之后访问区间 4。随后,在从 7 到 4 以及从 6 到 3 的移动过程中,又有两次跳跃,总跳跃长度为 3。因此,当青蛙访问完所有给定的区间后,总跳跃长度为 6。
图 F.2 给定的八个区间
给定数轴上的 $n$ 个区间和一个包含 $k$ 个区间的序列,编写一个程序,输出青蛙从初始区间 1 开始按顺序访问这 $k$ 个区间过程中的总跳跃长度。
输入格式
程序从标准输入读取数据。输入的第一行包含两个整数 $n$ 和 $k$ ($1 \le n \le 100,000$ 且 $1 \le k \le 1,000,000$),其中 $n$ 是区间数量,$k$ 是青蛙需要访问的区间数量。区间编号从 1 到 $n$,青蛙的初始位置始终为 1。接下来的 $n$ 行中,第 $i$ 行包含两个整数 $a$ 和 $b$ ($0 \le a < b \le 10^9$),分别表示区间 $i$ 的左端点和右端点。区间按左端点递增的顺序给出;如果左端点相同,则按右端点递增的顺序给出。此外,所有区间各不相同。最后一行包含 $k$ 个整数,表示青蛙需要按顺序访问的区间。这些整数在 1 到 $n$ 之间,且可以重复。
输出格式
程序将结果写入标准输出。仅输出一行,包含青蛙按顺序访问给定的 $k$ 个区间时的总跳跃长度。
样例
样例输入 1
4 3 0 2 0 3 3 5 6 7 4 2 3
样例输出 1
2
样例输入 2
4 3 0 2 0 3 3 5 6 7 2 3 2
样例输出 2
0
样例输入 3
8 5 1 8 2 4 5 11 13 15 15 17 16 18 19 22 20 22 3 7 4 6 3
样例输出 3
6