#include<bits/stdc++.h>
using namespace std;
string s[300]; int k,l;
vector<string>vect;
struct node {
int len;
string wz, sz;
}T[260];
bool cmp(node a, node b) {
return (a.len == b.len ? a.wz < b.wz : a.len < b.len);
}
void work(string a,int x) {
T[x].wz = a.substr(a.find(',') + 1, a.find(')') - 1 - a.find(','));
T[x].sz = a.substr(1, a.find(',') - 1);
T[x].len = T[x].wz.length();
vect.push_back(T[x].wz);
}
int main() {
bool ppdd = true;
while (cin>>s[k]) {
if (s[k][1] != ')') {
vector<string>::iterator it = find(vect.begin(), vect.end(), s[k].substr(s[k].find(',')+1,s[k].find(')')-1-s[k].find(',')));
if (it == vect.end() ){
work(s[k], k);
k++;
}
else {
ppdd = false;
}
}
else {
for (int i = 0; i < k; i++) {
vector<string>::iterator it2 = find(vect.begin(), vect.end(), T[i].wz.substr(0, T[i].wz.length() - 1));
if (it2 != vect.end()) {
ppdd = true;
}
else {
ppdd = false;
}
}
if (ppdd) {
sort(T, T + k, cmp);
for (int i = 0; i < k ; i++) {
cout << T[i].sz << " ";
}
l = k;
memset(s, 0, sizeof(s));
vect.clear();
k = 0;
cout << "\n";
}
else {
cout << "not complete" << "\n";
}
}
}
return 0;
}