有一条笔直的道路,上面运行着两种电车。一种是自东向西行驶的电车,另一种是自西向东行驶的电车。对于每种类型的电车,都有多辆电车定期运行,因此任何人可以在任何时间向任何方向乘坐电车。要乘坐电车,你必须为你所采取的每个方向支付一张票。换句话说,要乘坐自东向西行驶的电车,你必须支付一张 W 票(西行票);反之,要乘坐自西向东行驶的电车,你必须支付一张 E 票(东行票)。你可以在任何时间和地点上下电车,一旦上车,你可以随心所欲地乘坐。
邮递员 Bob 每天去邮局投递分配给他的邮件。他使用电车来投递邮件。为了方便起见,每个需要投递邮件的位置都用一个 $x$ 坐标表示,邮局位于 $x = 0$。
为了投递 $n$ 件邮件,邮局给了 Bob $n$ 张电车票。Bob 使用一张票投递一件邮件。然而,在邮局提供的 $n$ 张票中,W 票的数量为 $w$,E 票的数量为 $e$ ($e = n - w$)。通过使用他在邮局收到的票,Bob 不仅想要找出投递 $n$ 件邮件的顺序,还想最小化他使用电车行驶的距离。
根据投递邮件的顺序,它分为两种类型。第一种类型,记为 $t = 1$,是指邮件投递顺序不重要的情况。第二种类型,记为 $t = 2$,是指某一件特定的指定邮件必须最后投递,而所有其他邮件可以按任意顺序投递的情况。
例如,假设 $n = 5$,$w = 4$(W 票的数量),$t = 2$,需要投递邮件的位置的 $x$ 坐标为 $(-20, -15, 20, 30, 10)$,且必须最后投递的指定邮件的 $x$ 坐标为 $x = 10$。最优投递路线如图 H.1 所示,使用电车移动的总距离为 90。如图 H.1 所示,使用了四张 W 票和一张 E 票,并且指定邮件最后被投递。
图 H.1
考虑另一个例子,除了 $t = 1$ 外,所有信息与上述相同。这种情况下的最优投递路线如图 H.2 所示,总距离为 80。在这种情况下,你可以看到也使用了四张 W 票和一张 E 票。
图 H.2
给定关于 Bob 应投递的邮件的信息,编写一个程序来找出他使用电车行驶的最小距离。
输入格式
程序从标准输入读取数据。输入的第一行包含三个整数 $n$,$w$ 和 $t$ ($1 \le n \le 3 \times 10^5$,$0 \le w \le n$,$1 \le t \le 2$),其中 $n$ 是邮件数量,$w$ 是 W 票的数量,$t$ 表示如上所述的投递顺序类型。注意 E 票的数量为 $n - w$。 在下一行中,给出 $n$ 个整数。第 $i$ 个整数 $x_i$ ($1 \le i \le n$,$-10^9 \le x_i \le 10^9$,$x_i \neq 0$) 是第 $i$ 件邮件应投递位置的 $x$ 坐标。当 $t = 2$ 时,$x_n$ 表示必须最后投递的特定指定邮件的 $x$ 坐标。
你可以假设没有两个 $x_i$ 是相同的。
输出格式
程序应写入标准输出。仅打印一行。该行应包含 Bob 投递所有邮件所行驶的最小距离。如果 Bob 无法使用这些票投递邮件,则打印 -1。
样例
样例输入 1
5 4 2 -20 -15 20 30 10
样例输出 1
90
样例输入 2
5 4 1 -20 -15 20 30 10
样例输出 2
80
样例输入 3
7 1 2 10 13 -30 24 50 -5 -21
样例输出 3
-1