#P5377. Fenced In

Fenced In

题目描述

农夫约翰意识到他的许多奶牛都奇怪地害怕广场(害怕大的开放空间)。

为了让它们不那么害怕放牧,他通过建造垂直(南北)和水平(东西)栅栏将他的大片土地分成许多较小的区域。

大场是一个矩形,角点位于 (0,0){(0,0) }(A,B){(A,B)}

FJ{FJ }在不同的位置 a1{a1…}an(0<ai<A){an (0<ai<A) }建立 n{n }个垂直栅栏 (0{(0≤}n{n≤}2000){2000)};每个栅栏从 (ai,0){(ai,0) }(ai,B){(ai,B)}。他还在位置 b1{b1…}bm(0<bi<B){bm (0<bi<B) }处建立 m{m }个水平栅栏 (0{(0≤}m{m≤}2000){2000)};每个这样的栅栏从 (0,bi){(0,bi) }(A,bi){(A,bi)}

每个垂直栅栏穿过每个水平栅栏,将大场细分为总共 (n+1)(m+1){(n+1)(m+1) }个区域。

不幸的是,FJ{FJ }完全忘记在他的栅栏上建造大门,这使得奶牛无法离开他们的封闭区域并在整个田地里四处走动!

他想通过拆除他的一些栅栏来解决这种情况,让奶牛在相邻区域之间移动。他想选择某些对的相邻区域并移除分隔它们的整个围栏长度;之后,他希望奶牛能够穿过这些开口,这样它们就可以在他更大的田野中的任何地方旅行。

例如,FJ{FJ }可能会采用如下所示的栅栏模式:

+---+--+
|   |  |
+---+--+
|   |  |
|   |  |
+---+--+

这样打开它:

+---+--+
|      |
+---+  +
|      |
|      |
+---+--+

请帮助FJ{FJ}确定他为实现目标必须移除的栅栏的最小总长度。

输入格式

输入的第一行包含 A{A}B{B}n{n }m(1{m (1≤}A,B{A,B≤}1,000,000,000).{1,000,000,000).}接下来的 n{n }行包含 a1{a1…}an{an,}接下来的 m{m }行包含 b1{b1…}bm{bm}

输出格式

请写下FJ{FJ}必须拆除的围栏的最小长度。

注意,这可能太大,无法容纳标准的32{32}位整数,因此您可能需要使用64{64}位整数类型(例如,C/C++{C/C++}中的"longlong{long-long}")。

样例

输入样例

15 15 5 2
2
5
10
6
4
11
3

输出样例

44