#include <bits/stdc++.h>
using namespace std;
int n, m, q;
int par[100005], ans[100005];
pair <int, int> edge[100005];
vector <int> idx[100005];
struct ZATA {
int l, r, val;
};
vector <ZATA> vt[100005];
int FIND(int u) {
if (par[u] == u) return u;
else return par[u] = FIND(par[u]);
}
void MERGE(int u, int v) {
u = FIND(u);
v = FIND(v);
if (u == v) return;
par[v] = u;
}
main() {
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
freopen("TEST.inp", "r", stdin);
freopen("TEST.out", "w", stdout);
cin >> n >> m >> q;
for (int i = 1; i <= n; i++) {
int a;
cin >> a;
idx[a].push_back(i);
}
for (int i = 1; i <= q; i++) cin >> edge[i].first >> edge[i].second;
int mid = (-1 + q + 1) / 2;
for (int i = 1; i <= m; i++)
vt[mid].push_back({-1, q + 1, i});
int dem = 0;
while (dem < m) {
for (int i = 1; i <= n; i++) par[i] = i;
for (int i = 0; i <= q; i++) {
if (i) MERGE(edge[i].first, edge[i].second);
for (auto res : vt[i]) {
bool ok = true;
int root = 0;
for (auto p : idx[res.val]) {
if (root == 0) root = FIND(p);
else if (root != FIND(p)) ok = false;
}
if (ok) res.r = i;
else res.l = i;
mid = (res.l + res.r) / 2;
if (res.l == res.r - 1) {
ans[res.val] = res.r;
dem++;
} else vt[mid].push_back(res);
}
vt[i].clear();
}
}
for (int i = 1; i <= m; i++)
if (ans[i] == q + 1) cout << -1 << '\n';
else cout << ans[i] << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuLCBtLCBxOwppbnQgcGFyWzEwMDAwNV0sIGFuc1sxMDAwMDVdOwpwYWlyIDxpbnQsIGludD4gZWRnZVsxMDAwMDVdOwp2ZWN0b3IgPGludD4gaWR4WzEwMDAwNV07CgpzdHJ1Y3QgWkFUQSB7CiAgICBpbnQgbCwgciwgdmFsOwp9OwoKdmVjdG9yIDxaQVRBPiB2dFsxMDAwMDVdOwoKaW50IEZJTkQoaW50IHUpIHsKICAgIGlmIChwYXJbdV0gPT0gdSkgcmV0dXJuIHU7CiAgICBlbHNlIHJldHVybiBwYXJbdV0gPSBGSU5EKHBhclt1XSk7Cn0KCnZvaWQgTUVSR0UoaW50IHUsIGludCB2KSB7CiAgICB1ID0gRklORCh1KTsKICAgIHYgPSBGSU5EKHYpOwogICAgaWYgKHUgPT0gdikgcmV0dXJuOwogICAgcGFyW3ZdID0gdTsKfQoKbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICBmcmVvcGVuKCJURVNULmlucCIsICJyIiwgc3RkaW4pOwogICAgZnJlb3BlbigiVEVTVC5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICBjaW4gPj4gbiA+PiBtID4+IHE7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBpbnQgYTsKICAgICAgICBjaW4gPj4gYTsKICAgICAgICBpZHhbYV0ucHVzaF9iYWNrKGkpOwogICAgfQogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKSBjaW4gPj4gZWRnZVtpXS5maXJzdCA+PiBlZGdlW2ldLnNlY29uZDsKCiAgICBpbnQgbWlkID0gKC0xICsgcSArIDEpIC8gMjsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG07IGkrKykKICAgICAgICB2dFttaWRdLnB1c2hfYmFjayh7LTEsIHEgKyAxLCBpfSk7CiAgICBpbnQgZGVtID0gMDsKCiAgICB3aGlsZSAoZGVtIDwgbSkgewogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgcGFyW2ldID0gaTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBxOyBpKyspIHsKICAgICAgICAgICAgaWYgKGkpIE1FUkdFKGVkZ2VbaV0uZmlyc3QsIGVkZ2VbaV0uc2Vjb25kKTsKICAgICAgICAgICAgZm9yIChhdXRvIHJlcyA6IHZ0W2ldKSB7CiAgICAgICAgICAgICAgICBib29sIG9rID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGludCByb290ID0gMDsKICAgICAgICAgICAgICAgIGZvciAoYXV0byBwIDogaWR4W3Jlcy52YWxdKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHJvb3QgPT0gMCkgcm9vdCA9IEZJTkQocCk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocm9vdCAhPSBGSU5EKHApKSBvayA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG9rKSByZXMuciA9IGk7CiAgICAgICAgICAgICAgICBlbHNlIHJlcy5sID0gaTsKICAgICAgICAgICAgICAgIG1pZCA9IChyZXMubCArIHJlcy5yKSAvIDI7CiAgICAgICAgICAgICAgICBpZiAocmVzLmwgPT0gcmVzLnIgLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgYW5zW3Jlcy52YWxdID0gcmVzLnI7CiAgICAgICAgICAgICAgICAgICAgZGVtKys7CiAgICAgICAgICAgICAgICB9IGVsc2UgdnRbbWlkXS5wdXNoX2JhY2socmVzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2dFtpXS5jbGVhcigpOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtOyBpKyspCiAgICAgICAgaWYgKGFuc1tpXSA9PSBxICsgMSkgY291dCA8PCAtMSA8PCAnXG4nOwogICAgICAgIGVsc2UgY291dCA8PCBhbnNbaV0gPDwgJ1xuJzsKCiAgICByZXR1cm4gMDsKfQo=