#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 25e3 + 5;
int P, Q, n, m;
int a[N], b[N];
int what_subtask() {
if (max(n, m) <= 25e2) return 1;
return 2;
}
namespace sub1 {
const int N = 25e2 + 5;
int getIndex(int i, int j) {
return (j - 1) * n + i;
}
struct Edge {
int u, v, w;
bool operator<(const Edge& other) const {
return w < other.w;
}
};
vector<Edge> edges;
int p[N * N], sz[N * N];
void initSet() {
for (int u = 1; u <= n * m; u++) {
p[u] = u;
sz[u] = 1;
}
}
int findSet(int u) {
if (p[u] == u) return u;
return p[u] = findSet(p[u]);
}
bool unionSet(int u, int v) {
u = findSet(u);
v = findSet(v);
if (u == v) return false;
if (sz[u] < sz[v]) swap(u, v);
p[v] = u;
sz[u] += sz[v];
return true;
}
void solve() {
// Coi mỗi căn phòng là một đỉnh
// Trọng số của cạnh nối giữa 2 đỉnh chính bằng chiều dài bức tường ngăn giữa 2 căn phòng tương ứng với 2 đỉnh đó
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
int u = getIndex(i, j);
if (j + 1 <= m) { // căn phòng bên trên
int v = getIndex(i, j + 1), w = a[i] - a[i - 1];
edges.push_back({u, v, w});
}
if (i + 1 <= n) { // căn phòng bên phải
int v = getIndex(i + 1, j), w = b[j] - b[j - 1];
edges.push_back({u, v, w});
}
}
}
sort(edges.begin(), edges.end());
initSet();
ll ans = 0;
for (Edge e : edges) {
if (unionSet(e.u, e.v)) ans += e.w;
}
cout << ans << '\n';
}
}
namespace sub2 {
// Các cạnh ở chung một hàng hay chung một cột thì sẽ có trọng số như nhau
const int N = 25e3 + 5;
struct Data {
int w;
int type; // 0 = cột, 1 = hàng
bool operator<(const Data& other) const {
return w < other.w;
}
};
vector<Data> data_list;
void solve() {
for (int i = 1; i <= n; i++) {
int w = a[i] - a[i - 1];
data_list.push_back({w, 0});
}
for (int j = 1; j <= m; j++) {
int w = b[j] - b[j - 1];
data_list.push_back({w, 1});
}
sort(data_list.begin(), data_list.end());
ll ans = 0;
int cnt_col = 0, cnt_row = 0;
for (Data cur : data_list) {
if (cur.type == 0) {
if (cnt_col > 0 && cnt_row > 0) {
ans += 1ll * cur.w * (m - cnt_row);
}
else {
ans += 1ll * cur.w * (m - 1);
}
cnt_col++;
}
else {
if (cnt_row > 0 && cnt_col > 0) {
ans += 1ll * cur.w * (n - cnt_col);
}
else {
ans += 1ll * cur.w * (n - 1);
}
cnt_row++;
}
}
cout << ans << '\n';
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> P >> Q >> n >> m;
a[0] = 0;
for (int i = 1; i <= n; i++) cin >> a[i];
a[++n] = P;
sort(a, a + n + 1);
b[0] = 0;
for (int i = 1; i <= m; i++) cin >> b[i];
b[++m] = Q;
sort(b, b + m + 1);
int subtask = what_subtask();
if (subtask == 1) sub1::solve();
if (subtask == 2) sub2::solve();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSAyNWUzICsgNTsgCgppbnQgUCwgUSwgbiwgbTsgIAppbnQgYVtOXSwgYltOXTsKCmludCB3aGF0X3N1YnRhc2soKSB7CglpZiAobWF4KG4sIG0pIDw9IDI1ZTIpIHJldHVybiAxOyAKCXJldHVybiAyOyAKfQoKbmFtZXNwYWNlIHN1YjEgewoJY29uc3QgaW50IE4gPSAyNWUyICsgNTsgCgkKCWludCBnZXRJbmRleChpbnQgaSwgaW50IGopIHsKCQlyZXR1cm4gKGogLSAxKSAqIG4gKyBpOyAgIAoJfQoKCXN0cnVjdCBFZGdlIHsKCQlpbnQgdSwgdiwgdzsgCgkJYm9vbCBvcGVyYXRvcjwoY29uc3QgRWRnZSYgb3RoZXIpIGNvbnN0IHsKCQkJcmV0dXJuIHcgPCBvdGhlci53OyAKCQl9Cgl9OyAKCgl2ZWN0b3I8RWRnZT4gZWRnZXM7ICAKCglpbnQgcFtOICogTl0sIHN6W04gKiBOXTsgCgoJdm9pZCBpbml0U2V0KCkgewoJCWZvciAoaW50IHUgPSAxOyB1IDw9IG4gKiBtOyB1KyspIHsKCQkJcFt1XSA9IHU7ICAKCQkJc3pbdV0gPSAxOyAgCgkJfQoJfQoKCWludCBmaW5kU2V0KGludCB1KSB7CgkJaWYgKHBbdV0gPT0gdSkgcmV0dXJuIHU7IAoJCXJldHVybiBwW3VdID0gZmluZFNldChwW3VdKTsgCgl9CgoJYm9vbCB1bmlvblNldChpbnQgdSwgaW50IHYpIHsKCQl1ID0gZmluZFNldCh1KTsgCgkJdiA9IGZpbmRTZXQodik7IAoJCWlmICh1ID09IHYpIHJldHVybiBmYWxzZTsgIAoJCWlmIChzelt1XSA8IHN6W3ZdKSBzd2FwKHUsIHYpOyAgCgkJcFt2XSA9IHU7ICAKCQlzelt1XSArPSBzelt2XTsKCQlyZXR1cm4gdHJ1ZTsgCgl9CgoJdm9pZCBzb2x2ZSgpIHsKCQkvLyBDb2kgbeG7l2kgY8SDbiBwaMOybmcgbMOgIG3hu5l0IMSR4buJbmgKCQkvLyBUcuG7jW5nIHPhu5EgY+G7p2EgY+G6oW5oIG7hu5FpIGdp4buvYSAyIMSR4buJbmggY2jDrW5oIGLhurFuZyBjaGnhu4F1IGTDoGkgYuG7qWMgdMaw4budbmcgbmfEg24gZ2nhu69hIDIgY8SDbiBwaMOybmcgdMawxqFuZyDhu6luZyB24bubaSAyIMSR4buJbmggxJHDswoJCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCQlmb3IgKGludCBqID0gMTsgaiA8PSBtOyBqKyspIHsKCQkJCWludCB1ID0gZ2V0SW5kZXgoaSwgaik7ICAKCQkJCWlmIChqICsgMSA8PSBtKSB7IC8vIGPEg24gcGjDsm5nIGLDqm4gdHLDqm4KCQkJCQlpbnQgdiA9IGdldEluZGV4KGksIGogKyAxKSwgdyA9IGFbaV0gLSBhW2kgLSAxXTsgCgkJCQkJZWRnZXMucHVzaF9iYWNrKHt1LCB2LCB3fSk7ICAKCQkJCX0KCQkJCWlmIChpICsgMSA8PSBuKSB7IC8vIGPEg24gcGjDsm5nIGLDqm4gcGjhuqNpCgkJCQkJaW50IHYgPSBnZXRJbmRleChpICsgMSwgaiksIHcgPSBiW2pdIC0gYltqIC0gMV07IAoJCQkJCWVkZ2VzLnB1c2hfYmFjayh7dSwgdiwgd30pOyAKCQkJCX0KCQkJfQoJCX0KCgkJc29ydChlZGdlcy5iZWdpbigpLCBlZGdlcy5lbmQoKSk7ICAgCgoJCWluaXRTZXQoKTsgICAKCgkJbGwgYW5zID0gMDsgIAoJCWZvciAoRWRnZSBlIDogZWRnZXMpIHsKCQkJaWYgKHVuaW9uU2V0KGUudSwgZS52KSkgYW5zICs9IGUudzsgCgkJfQoKCQljb3V0IDw8IGFucyA8PCAnXG4nOyAKCX0KfQoKbmFtZXNwYWNlIHN1YjIgewoJLy8gQ8OhYyBj4bqhbmgg4bufIGNodW5nIG3hu5l0IGjDoG5nIGhheSBjaHVuZyBt4buZdCBj4buZdCB0aMOsIHPhur0gY8OzIHRy4buNbmcgc+G7kSBuaMawIG5oYXUKCWNvbnN0IGludCBOID0gMjVlMyArIDU7ICAgCgoJc3RydWN0IERhdGEgewoJCWludCB3OyAKCQlpbnQgdHlwZTsgLy8gMCA9IGPhu5l0LCAxID0gaMOgbmcKCQlib29sIG9wZXJhdG9yPChjb25zdCBEYXRhJiBvdGhlcikgY29uc3QgewoJCQlyZXR1cm4gdyA8IG90aGVyLnc7IAoJCX0KCX07IAoKCXZlY3RvcjxEYXRhPiBkYXRhX2xpc3Q7ICAKCgl2b2lkIHNvbHZlKCkgewoJCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCQlpbnQgdyA9IGFbaV0gLSBhW2kgLSAxXTsgCgkJCWRhdGFfbGlzdC5wdXNoX2JhY2soe3csIDB9KTsgCgkJfQoKCQlmb3IgKGludCBqID0gMTsgaiA8PSBtOyBqKyspIHsKCQkJaW50IHcgPSBiW2pdIC0gYltqIC0gMV07IAoJCQlkYXRhX2xpc3QucHVzaF9iYWNrKHt3LCAxfSk7IAoJCX0KCgkJc29ydChkYXRhX2xpc3QuYmVnaW4oKSwgZGF0YV9saXN0LmVuZCgpKTsgIAoKCQlsbCBhbnMgPSAwOyAKCQlpbnQgY250X2NvbCA9IDAsIGNudF9yb3cgPSAwOyAgCgkJZm9yIChEYXRhIGN1ciA6IGRhdGFfbGlzdCkgewoJCQlpZiAoY3VyLnR5cGUgPT0gMCkgewoJCQkJaWYgKGNudF9jb2wgPiAwICYmIGNudF9yb3cgPiAwKSB7CgkJCQkJYW5zICs9IDFsbCAqIGN1ci53ICogKG0gLSBjbnRfcm93KTsgIAoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJYW5zICs9IDFsbCAqIGN1ci53ICogKG0gLSAxKTsgCgkJCQl9CgkJCQljbnRfY29sKys7IAoJCQl9CgkJCWVsc2UgewoJCQkJaWYgKGNudF9yb3cgPiAwICYmIGNudF9jb2wgPiAwKSB7CgkJCQkJYW5zICs9IDFsbCAqIGN1ci53ICogKG4gLSBjbnRfY29sKTsgIAoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJYW5zICs9IDFsbCAqIGN1ci53ICogKG4gLSAxKTsgCgkJCQl9CgkJCQljbnRfcm93Kys7IAoJCQl9CgkJfQoKCQljb3V0IDw8IGFucyA8PCAnXG4nOyAKCX0KfQoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJY2luID4+IFAgPj4gUSA+PiBuID4+IG07IAoKCWFbMF0gPSAwOyAKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgY2luID4+IGFbaV07CglhWysrbl0gPSBQOyAgIAoJc29ydChhLCBhICsgbiArIDEpOyAgCgoJYlswXSA9IDA7ICAKCWZvciAoaW50IGkgPSAxOyBpIDw9IG07IGkrKykgY2luID4+IGJbaV07IAoJYlsrK21dID0gUTsgIAoJc29ydChiLCBiICsgbSArIDEpOyAKCQoJaW50IHN1YnRhc2sgPSB3aGF0X3N1YnRhc2soKTsgIAoJCQoJaWYgKHN1YnRhc2sgPT0gMSkgc3ViMTo6c29sdmUoKTsgIAoJaWYgKHN1YnRhc2sgPT0gMikgc3ViMjo6c29sdmUoKTsgCn0=