#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<set>
using namespace std;
struct node
{
string name;
int x;
double y;
bool operator<(const node &str)const
{
if(str.x==x)
{
return y<str.y;
}
return str.x<x;
}
} a[10000];
int n,x,i,j,k,f;
set<int>s;
string s1;
int main()
{
scanf("%d",&n);
if (n==0)
{
printf("- - -\n");
return 0;
}
for (i=1; i<=n; i++)
{
cin>>s1;
scanf("%d",&k);
s.clear();
for (j=1; j<=k; j++)
{
scanf("%d",&x);
s.insert(x);
}
a[i].name=s1;
a[i].x=s.size();;
a[i].y=k;
}
sort(a+1,a+n+1);
cout<<a[1].name;
f++;
for(i=2; i<=n; i++)
{
if(f>=3)
{
break;
}
cout<<" "<<a[i].name;
f++;
}
while(f<3)
{
cout<<" -";
f++;
}
printf("\n");
}