#include <stdio.h>
#include <iostream>
#include <vector>
#include <queue>
#include <map>
using namespace std;
vector<int> r[200100];
vector<int> b[200100];
int rG[200100];
int bVisit[200100];
int ans[200100];
int N, B, R;
int idx = 1;
void rbfs(int start) {
queue<int> q;
rG[start] = idx;
q.push(start);
while (q.empty() == false) {
int s = q.front();
q.pop();
int len = r[s].size();
for (int i = 0; i < len; i++) {
int next = r[s][i];
if (rG[next] != 0) continue;
q.push(next);
rG[next] = idx;
}
}
idx++;
}
void bbfs(int start) {
queue<int> q;
q.push(start);
map<int, vector<int>*> m;
bVisit[start] = 1;
m[rG[start]] = new vector<int>();
m[rG[start]]->push_back(start);
while (q.empty() == false) {
int s = q.front();
q.pop();
int len = b[s].size();
for (int i = 0; i < len; i++) {
int next = b[s][i];
if (bVisit[next] == 0) {
bVisit[next] = 1;
if (m.find(rG[next]) == m.end()) {
m[rG[next]] = new vector<int>();
}
m[rG[next]]->push_back(next);
}
}
}
for (auto it = m.begin(); it != m.end(); it++) {
vector<int>* v = it->second;
int len = v->size();
for (int i = 0; i < len; i++) {
ans[(*v)[i]] = v->size();
}
delete v;
}
}
int main() {
//freopen("Text.txt", "r", stdin);
scanf("%d %d %d", &N, &R, &B);
for (int i = 0; i < R; i++) {
int s, e;
scanf("%d %d", &s, &e);
r[s].push_back(e);
r[e].push_back(s);
}
for (int i = 0; i < B; i++) {
int s, e;
scanf("%d %d", &s, &e);
b[s].push_back(e);
b[e].push_back(s);
}
for (int i = 1; i <= N; i++) {
if (rG[i] == 0) {
rbfs(i);
}
}
for (int i = 1; i <= N; i++) {
if (bVisit[i] == 0) {
bbfs(i);
}
}
for (int i = 1; i <= N; i++) {
printf("%d ", ans[i]);
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8bWFwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPGludD4gclsyMDAxMDBdOwp2ZWN0b3I8aW50PiBiWzIwMDEwMF07CgppbnQgckdbMjAwMTAwXTsKaW50IGJWaXNpdFsyMDAxMDBdOwppbnQgYW5zWzIwMDEwMF07CmludCBOLCBCLCBSOwoKCmludCBpZHggPSAxOwp2b2lkIHJiZnMoaW50IHN0YXJ0KSB7CglxdWV1ZTxpbnQ+IHE7CglyR1tzdGFydF0gPSBpZHg7CglxLnB1c2goc3RhcnQpOwoJd2hpbGUgKHEuZW1wdHkoKSA9PSBmYWxzZSkgewoJCWludCBzID0gcS5mcm9udCgpOwoJCXEucG9wKCk7CgkJaW50IGxlbiA9IHJbc10uc2l6ZSgpOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKCQkJaW50IG5leHQgPSByW3NdW2ldOwoJCQlpZiAockdbbmV4dF0gIT0gMCkgY29udGludWU7CgkJCXEucHVzaChuZXh0KTsKCQkJckdbbmV4dF0gPSBpZHg7CgkJfQoJfQoJaWR4Kys7Cn0KCnZvaWQgYmJmcyhpbnQgc3RhcnQpIHsKCglxdWV1ZTxpbnQ+IHE7CglxLnB1c2goc3RhcnQpOwoJbWFwPGludCwgdmVjdG9yPGludD4qPiBtOwoJYlZpc2l0W3N0YXJ0XSA9IDE7CgltW3JHW3N0YXJ0XV0gPSBuZXcgdmVjdG9yPGludD4oKTsKCW1bckdbc3RhcnRdXS0+cHVzaF9iYWNrKHN0YXJ0KTsKCXdoaWxlIChxLmVtcHR5KCkgPT0gZmFsc2UpIHsKCQlpbnQgcyA9IHEuZnJvbnQoKTsKCQlxLnBvcCgpOwoJCWludCBsZW4gPSBiW3NdLnNpemUoKTsKCQlmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CgkJCWludCBuZXh0ID0gYltzXVtpXTsKCQkJaWYgKGJWaXNpdFtuZXh0XSA9PSAwKSB7CgkJCQliVmlzaXRbbmV4dF0gPSAxOwoJCQkJaWYgKG0uZmluZChyR1tuZXh0XSkgPT0gbS5lbmQoKSkgewoJCQkJCW1bckdbbmV4dF1dID0gbmV3IHZlY3RvcjxpbnQ+KCk7CgkJCQl9CgkJCQltW3JHW25leHRdXS0+cHVzaF9iYWNrKG5leHQpOwoJCQl9CgkJfQoJfQoKCWZvciAoYXV0byBpdCA9IG0uYmVnaW4oKTsgaXQgIT0gbS5lbmQoKTsgaXQrKykgewoJCXZlY3RvcjxpbnQ+KiB2ID0gaXQtPnNlY29uZDsKCQlpbnQgbGVuID0gdi0+c2l6ZSgpOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKCQkJYW5zWygqdilbaV1dID0gdi0+c2l6ZSgpOwoJCX0KCQlkZWxldGUgdjsKCX0KfQoKaW50IG1haW4oKSB7CgkvL2ZyZW9wZW4oIlRleHQudHh0IiwgInIiLCBzdGRpbik7CglzY2FuZigiJWQgJWQgJWQiLCAmTiwgJlIsICZCKTsKCWZvciAoaW50IGkgPSAwOyBpIDwgUjsgaSsrKSB7CgkJaW50IHMsIGU7CgkJc2NhbmYoIiVkICVkIiwgJnMsICZlKTsKCQlyW3NdLnB1c2hfYmFjayhlKTsKCQlyW2VdLnB1c2hfYmFjayhzKTsKCX0KCWZvciAoaW50IGkgPSAwOyBpIDwgQjsgaSsrKSB7CgkJaW50IHMsIGU7CgkJc2NhbmYoIiVkICVkIiwgJnMsICZlKTsKCQliW3NdLnB1c2hfYmFjayhlKTsKCQliW2VdLnB1c2hfYmFjayhzKTsKCX0KCWZvciAoaW50IGkgPSAxOyBpIDw9IE47IGkrKykgewoJCWlmIChyR1tpXSA9PSAwKSB7CgkJCXJiZnMoaSk7CgkJfQoJfQoKCWZvciAoaW50IGkgPSAxOyBpIDw9IE47IGkrKykgewoJCWlmIChiVmlzaXRbaV0gPT0gMCkgewoJCQliYmZzKGkpOwoJCX0KCX0KCWZvciAoaW50IGkgPSAxOyBpIDw9IE47IGkrKykgewoJCXByaW50ZigiJWQgIiwgYW5zW2ldKTsKCX0KCXJldHVybiAwOwp9