#abc273f. [abc273_f]Hammer 2

[abc273_f]Hammer 2

问题陈述

高桥位于数轴的原点。高桥想要到达坐标为 XX 的目标点。

此外,数轴上有 NN 个墙和 NN 个锤子。

  • 在坐标 Y1,Y2,,YNY_1,Y_2,\dots,Y_N 处分别有类型为 1,2,,N1,2,\dots,N 的墙。
    • 最初,高桥无法越过这些墙。
  • 在坐标 Z1,Z2,,ZNZ_1,Z_2,\dots,Z_N 处分别有类型为 1,2,,N1,2,\dots,N 的锤子。
    • 当高桥到达带有锤子的坐标时,他会获得该锤子。
    • ii 类锤子专门用于摧毁第 ii 类墙。在获得第 ii 类锤子后,他可以摧毁第 ii 类墙并越过它。

确定他是否能够到达目标点。如果可以,找出他所需行进的最小距离。

约束条件

  • 输入中的所有值均为整数。
  • 1N15001 \le N \le 1500
  • 1X,Yi,Zi1091 \le |X|,|Y_i|,|Z_i| \le 10^9
  • (2×N+1)(2 \times N + 1) 个坐标 X,YiX,Y_iZiZ_i 互不相同。

输入

输入以以下格式从标准输入给出:

NN XX Y1Y_1 Y2Y_2 \dots YNY_N Z1Z_1 Z2Z_2 \dots ZNZ_N

输出

如果高桥可以到达目标点,则以整数形式打印出他所需行进的最小距离。
否则,打印 -1

示例输入 1

3 10
-2 8 -5
5 -10 3

示例输出 1

40

高桥可以通过以下方式行进 4040 的距离到达目标点,这是可能的最小距离:

  • 他从坐标 00 开始。
  • 他移动到坐标 33 来获取第 33 类锤子。
  • 他移动到坐标 55 来获取第 11 类锤子。
  • 他移动到坐标 2-2 来摧毁第 11 类墙。
  • 他移动到坐标 5-5 来摧毁第 33 类墙。
  • 他移动到坐标 10-10 来获取第 22 类锤子。
  • 他移动到坐标 88 来摧毁第 22 类墙。
  • 他移动到目标点坐标 1010

示例输入 2

5 -1
10 -20 30 -40 50
-10 20 -30 40 -50

示例输出 2

1

为了到达目标点,可能不要求他获得锤子或摧毁墙。

示例输入 3

1 100
30
60

示例输出 3

-1

高桥无法获得第 11 类锤子,也无法到达目标点。

示例输入 4

4 865942261
703164879 -531670946 -874856231 -700164975
-941120316 599462305 -649785130 665402307

示例输出 4

4078987507