울타리에 갇힌 소 (Gold)

격자로 나뉜 목장의 모든 구역이 통하도록 제거하는 울타리 길이 합을 최소화합니다.

보통7최소 신장 트리그리디정렬아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

농부 존은 자기 소가 넓게 트인 공간을 무서워한다는 사실을 알아차렸다. 소가 풀을 뜯을 때 덜 무서워하도록, 그는 넓은 목초지에 남북 방향(세로) 울타리와 동서 방향(가로) 울타리를 세워 여러 구역으로 나눴다.

목초지는 (0,0)(0,0)(A,B)(A,B)를 마주 보는 꼭짓점으로 하는 직사각형이다. 존은 서로 다른 위치 a1,,ana_1, \ldots, a_n에 세로 울타리를 nn개 세웠고(0n20000 \le n \le 2000, 0<ai<A0 < a_i < A), 위치 aia_i의 울타리는 (ai,0)(a_i, 0)에서 (ai,B)(a_i, B)까지 이어진다. 또 서로 다른 위치 b1,,bmb_1, \ldots, b_m에 가로 울타리를 mm개 세웠고(0m20000 \le m \le 2000, 0<bi<B0 < b_i < B), 위치 bib_i의 울타리는 (0,bi)(0, b_i)에서 (A,bi)(A, b_i)까지 이어진다. 세로 울타리는 가로 울타리와 모두 교차하므로 목초지는 (n+1)(m+1)(n+1)(m+1)개의 구역으로 나뉜다.

그런데 존은 울타리에 문을 내는 것을 완전히 잊어버렸다. 그래서 소는 자기가 있는 구역을 벗어나 목초지 전체를 돌아다니지 못한다. 존은 울타리 일부를 걷어내 이웃한 구역 사이를 오갈 수 있게 하려 한다. 이웃한 두 구역을 골라 그 둘을 가르는 울타리를 길이 전체에 걸쳐 걷어내는 방식만 쓴다. 이렇게 뚫은 통로를 지나 소가 목초지 어디로든 갈 수 있어야 한다.

예를 들어 울타리가 이렇게 놓여 있으면

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

다음처럼 걷어낼 수 있다.

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

존이 걷어내야 하는 울타리 길이의 합의 최솟값을 구하라.

입력

첫 줄에 AA, BB, nn, mm이 주어진다(1A,B1091 \le A, B \le 10^9). 다음 nn개의 줄에 a1,,ana_1, \ldots, a_n이 한 줄에 하나씩 주어지고, 그다음 mm개의 줄에 b1,,bmb_1, \ldots, b_m이 한 줄에 하나씩 주어진다.

출력

걷어내야 하는 울타리 길이의 합의 최솟값을 출력한다. 이 값은 32비트 정수 범위를 넘을 수 있으므로 64비트 정수형(C나 C++의 long long 등)이 필요할 수도 있다.