#include <iostream>
#include <vector>
#include <string.h>
#include <algorithm>
using namespace std;
vector<int> v[2510];
char name[270000][5];
int getbigindex(char s[])
{
return s[3] - '0' + (s[2] - 'A') * 10 + (s[1] - 'A') * 10 * 26 + (s[0] - 'A') * 10 * 26 * 26;
}
int main()
{
int n, k;
scanf("%d%d", &n, &k);
int i, c, bigindex, j, course;
char s[5];
for(i = 1; i <= n; i++)
{
getchar();
scanf("%s%d", s, &c);
bigindex = getbigindex(s);
strcpy(name[bigindex], s);
for(j = 1; j <= c; j++)
{
scanf("%d", &course);
v[course].push_back(bigindex);
}
}
int size;
for(i = 1; i <= k; i++)
{
size = v[i].size();
printf("%d %d\n", i, size);
if(size > 0)
{
sort(v[i].begin(), v[i].end());
for(j = 0; j < size; j++)
{
printf("%s\n", name[v[i][j]]);
}
}
}
system("pause");
return 0;
}