#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
vector<int> v[200010];
int n,m,k;
long long vis[200010],d[200010];
void DFS(int x,int s){
	vis[x]+=s;
	for(int i=0;i<v[x].size();i++){
		if(vis[v[x][i]]%200010==0)DFS(v[x][i],s);
	}
}
void Solve(int r){
	for(int i=0;i<n;i++){
		v[i].clear();
		vis[i]*=200010;
	}
	for(int i=0;i<r;i++){
		int a,b;cin>>a>>b;a--,b--;
		v[a].push_back(b);
		v[b].push_back(a);
	}
	for(int i=0;i<n;i++){
		if(vis[i]%200010==0){
			DFS(i,i+1);
		}
	}
}
int main(){
	cin>>n>>m>>k;
	for(int i=0;i<n;i++)vis[i]=0;
	Solve(m);
	Solve(k);
	for(int i=0;i<n;i++)d[i]=vis[i];
	sort(d,d+n);
	for(int i=0;i<n;i++){
		cout<<upper_bound(d,d+n,vis[i])-lower_bound(d,d+n,vis[i])<<endl;
	}
	return 0;
}
