#include <bits/stdc++.h>
using namespace std;
int n, m, p, q;
int f1[10005], f2[10005];
void init()
{
for (int i = 1; i <= n; i ++)
{
f1[i] = i;
}
for (int i = 1; i <= m; i ++)
{
f2[i] = i;
}
}
int find(int x)
{
return f1[x] == x ? x : f1[x] = find(f1[x]);
}
int find2(int x)
{
return f2[x] == x ? x : f2[x] = find(f2[x]);
}
int main()
{
scanf("%d%d%d%d", &n, &m, &p, &q);
init();
for (int i = 1; i <= p; i ++)
{
int x, y;
scanf("%d%d", &x, &y);
if (find(x) != find(y))
{
f1[find(x)] = find(y);
}
}
for (int i = 1; i <= q; i ++)
{
int x, y;
scanf("%d%d", &x, &y);
x = abs(x), y = abs(y);
if (find2(x) != find2(y))
{
f2[find2(x)] = find2(y);
}
}
int ans1 = 1;
for (int i = 2; i <= n; i ++)
{
if (find(1) == find(i))
{
ans1 ++;
//cout << i << endl;
}
}
int ans2 = 1;
for (int i = 2; i <= m; i ++)
{
if (find2(1) == find2(i))
{
ans2 ++;
}
}
printf("%d", min(ans1, ans2));
return 0;
}
20pts , find2函数出了问题 , 帮蒟蒻看看呗