求调
#include<bits/stdc++.h>
using namespace std;
int n,m,p,q,ans;
const int N=1e8+10;
int fa[N];
int find(int x){
if(fa[x]==x) return x;
return fa[x]=find(fa[x]);
}
void u(int x,int y){
fa[find(x)]=find(y);
}
int main(){
cin>>n>>m>>p>>q;
for(int i=1;i<=n+m;i++){
fa[i]=i;
}
for(int i=1;i<=p;i++){
int x,y;
cin>>x,y;
if(find(x)!=find(y)) u(x,y);
}
for(int i=1;i<=p;i++){
int x,y;
cin>>x,y;
x*=-1;
y*=-1;
if(find(x+n)!=find(y+n)) u(x+n,y+n);
}
for(int i=1;i<=n;i++){
if(find(i)==find(1)) ans++;
}
for(int i=n+1;i<=n+m;i++){
if(find(i)==find(n+1)) ans++;
}
cout<<ans;
return 0;
}