#include<bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, test_case = 1;
while (cin >> n) {
map<string, int> name_to_id;
vector<string> id_to_name(n);
for (int i = 0; i < n; ++i) {
cin >> id_to_name[i];
name_to_id[id_to_name[i]] = i;
}
int m;
cin >> m;
vector<vector<int>> adj(n);
vector<int> in_deg(n, 0);
for (int i = 0; i < m; ++i) {
string u_name, v_name;
cin >> u_name >> v_name;
int u = name_to_id[u_name];
int v = name_to_id[v_name];
adj[u].push_back(v);
++in_deg[v];
}
// min-heap theo chỉ số từ điển nhỏ nhất
priority_queue<int, vector<int>, greater<int>> pq;
for (int i = 0; i < n; ++i) {
if (in_deg[i] == 0) {
pq.push(i);
}
}
vector<int> topo_order;
while (!pq.empty()) {
int u = pq.top();
pq.pop();
topo_order.push_back(u);
for (int v : adj[u]) {
--in_deg[v];
if (in_deg[v] == 0) {
pq.push(v);
}
}
}
cout << "Case #" << test_case++ << ": Dilbert should drink beverages in this order:";
for (int idx : topo_order) {
cout << " " << id_to_name[idx];
}
cout << ".\n\n";
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwoKICAgIGludCBuLCB0ZXN0X2Nhc2UgPSAxOwogICAgd2hpbGUgKGNpbiA+PiBuKSB7CiAgICAgICAgbWFwPHN0cmluZywgaW50PiBuYW1lX3RvX2lkOwogICAgICAgIHZlY3RvcjxzdHJpbmc+IGlkX3RvX25hbWUobik7CgogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgICAgIGNpbiA+PiBpZF90b19uYW1lW2ldOwogICAgICAgICAgICBuYW1lX3RvX2lkW2lkX3RvX25hbWVbaV1dID0gaTsKICAgICAgICB9CgogICAgICAgIGludCBtOwogICAgICAgIGNpbiA+PiBtOwogICAgICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gYWRqKG4pOwogICAgICAgIHZlY3RvcjxpbnQ+IGluX2RlZyhuLCAwKTsKCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtOyArK2kpIHsKICAgICAgICAgICAgc3RyaW5nIHVfbmFtZSwgdl9uYW1lOwogICAgICAgICAgICBjaW4gPj4gdV9uYW1lID4+IHZfbmFtZTsKICAgICAgICAgICAgaW50IHUgPSBuYW1lX3RvX2lkW3VfbmFtZV07CiAgICAgICAgICAgIGludCB2ID0gbmFtZV90b19pZFt2X25hbWVdOwogICAgICAgICAgICBhZGpbdV0ucHVzaF9iYWNrKHYpOwogICAgICAgICAgICArK2luX2RlZ1t2XTsKICAgICAgICB9CgogICAgICAgIC8vIG1pbi1oZWFwIHRoZW8gY2jhu4kgc+G7kSB04burIMSRaeG7g24gbmjhu48gbmjhuqV0CiAgICAgICAgcHJpb3JpdHlfcXVldWU8aW50LCB2ZWN0b3I8aW50PiwgZ3JlYXRlcjxpbnQ+PiBwcTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgICAgICBpZiAoaW5fZGVnW2ldID09IDApIHsKICAgICAgICAgICAgICAgIHBxLnB1c2goaSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZlY3RvcjxpbnQ+IHRvcG9fb3JkZXI7CiAgICAgICAgd2hpbGUgKCFwcS5lbXB0eSgpKSB7CiAgICAgICAgICAgIGludCB1ID0gcHEudG9wKCk7CiAgICAgICAgICAgIHBxLnBvcCgpOwogICAgICAgICAgICB0b3BvX29yZGVyLnB1c2hfYmFjayh1KTsKICAgICAgICAgICAgZm9yIChpbnQgdiA6IGFkalt1XSkgewogICAgICAgICAgICAgICAgLS1pbl9kZWdbdl07CiAgICAgICAgICAgICAgICBpZiAoaW5fZGVnW3ZdID09IDApIHsKICAgICAgICAgICAgICAgICAgICBwcS5wdXNoKHYpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBjb3V0IDw8ICJDYXNlICMiIDw8IHRlc3RfY2FzZSsrIDw8ICI6IERpbGJlcnQgc2hvdWxkIGRyaW5rIGJldmVyYWdlcyBpbiB0aGlzIG9yZGVyOiI7CiAgICAgICAgZm9yIChpbnQgaWR4IDogdG9wb19vcmRlcikgewogICAgICAgICAgICBjb3V0IDw8ICIgIiA8PCBpZF90b19uYW1lW2lkeF07CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgIi5cblxuIjsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=