#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
#define pb push_back
#define ff first
#define ss second
struct dsu{
vector<int> sz, p, l, r;
int n, mx;
dsu(int ns){
n = ns;
p.resize(n + 1);
sz.resize(n + 1);
l.resize(n + 1);
r.resize(n + 1);
mx = 1;
for (int i = 1; i <= n; i++){
sz[i] = 1;
p[i] = l[i] = r[i] = i;
}
}
void clear(){
mx = 1;
for (int i = 1; i <= n; i++){
sz[i] = 1;
p[i] = l[i] = r[i] = i;
}
}
int get(int v){
if (p[v] != v){
p[v] = get(p[v]);
}
return p[v];
}
void unite(int x, int y){
x = get(x); y = get(y);
if (x == y) return;
if (sz[x] > sz[y]) swap(x, y);
p[x] = y;
sz[y] += sz[x];
r[y] = max(r[y], r[x]);
l[y] = min(l[y], l[x]);
}
};
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, m, d; cin>>n>>m>>d;
vector<pii> M[2 * d];
vector<int> f(d + 2); f[0] = f[d + 1] = 1;
int L1 = 1e9, R1 = 0;
for (int i = 1; i <= n; i++){
int x, y; cin>>x>>y;
y++;
f[y]++;
M[x].pb({y, 1});
M[x + d].pb({y, 1});
L1 = min(L1, y); R1 = max(R1, y);
}
vector<int> D[2 * d];
vector<pii> all;
for (int i = 1; i <= m; i++){
int x, y; cin>>x>>y;
y++;
M[x].pb({y, 0});
M[x + d].pb({y, 0});
all.pb({x, y});
}
dsu T(d);
vector<int> L(d), R(d); L[d - 1] = 1e9;
ll out = 1e18;
for (int i = 0; i < d; i++){
for (auto [x, y]: all){
f[y]++;
}
int A = d;
auto rem = [&](int x){
if (f[x]) return;
A--;
if (!f[x - 1]) T.unite(x - 1, x);
if (!f[x + 1]) T.unite(x, x + 1);
int v = T.get(x);
if (T.l[v] != 1 && T.r[v] != d){
T.mx = max(T.mx, T.sz[v] + 1);
}
};
for (int j = 1; j <= d; j++){
if (!f[j]){
rem(j);
}
}
auto get = [&](){
if (A <= 1) return d;
return T.mx;
};
for (int j = d - 2; j >= 0; j--){
L[j] = L[j + 1]; R[j] = R[j + 1];
for (auto [y, b]: M[i + j + 1]){
if (!b){
L[j] = min(L[j], y);
R[j] = max(R[j], y);
}
}
}
int cc = 0;
for (int j = i; j < i + d; j++){
for (auto [y, b]: M[j]){
if (b){
cc++;
}
else {
f[y]--;
}
}
if (cc == n){
int L2 = min(L1, L[j - i]), R2 = max(R1, R[j - i]), Y = min((d + 1) - get(), R2 - L2 + 1);
out = min(out, 1LL * (j - i + 1) * Y);
}
}
T.clear();
}
cout<<out<<"\n";
}