#include
#include<stdio.h>
#include <bits/stdc++.h>
#include
using namespace std;
int main()
{
int count1=0;
string v1;
map<string,int > m;
priority_queue< pair<int,string>, vector <pair<int,string> > , greater<pair<int,string> > > pq;
string v;
int n,bank,i,j,l;
scanf("%d",&n);
map <string, int> :: iterator p;
vector<pair<string,int> >adj[n];
for(i=0;i<n;i++)
{
scanf("%d",&bank);
map <string, int> :: iterator itr;
for(j=0;j<bank;j++)
{
fflush(stdin);
getline(cin,v);
if(m.empty())
{
m.insert(pair<string,int>(v,1));
}
else
{
itr=m.find(v);
if(itr!=m.end())
{
itr->second=itr->second+1;
}
else
{
m.insert(pair<string,int>(v,1));
}
}
}
for(p=m.begin();p!=m.end();p++)
{
count1++;
l=p->second;
v1=p->first;
pq.push(make_pair(l,v1));
}
m.clear();
while(!pq.empty())
{
adj[i].push_back(make_pair(pq.top().second,pq.top().first));
pq.pop();
}
pq= priority_queue< pair<int,string>, vector <pair<int,string> > , greater<pair<int,string> > >();
}
printf("\n");
vector< pair<string, int> >::iterator r;
for(i=0;i<n;i++)
{
for(r = adj[i].begin();r!=adj[i].end();r++)
{
cout<<(*r).first<<setw(2);
printf("%d",(*r).second);
printf("\n");
}
printf("\n");
}
}