#include<stdio.h>
#include<string.h>
#include<iostream>
#include<vector>
#include<map>
#include<set>
using namespace std;
struct data
{
string s;
double ans,cnt;
};
vector<data>vec;
map<string,int>mp;
map<string,double>mp1;
set<string>st;
int main()
{
long long test,i,j,tag=0,tc,flag=0;
double res,counter=0.0,a;
char str[35];
string s="";
data obj;
scanf("%d\n",&test);
for(tc=1;tc<=test;tc++)
{
counter=0.0;
tag=0;
while(gets(str))
{
if(strlen(str)==0)
{
break;
}
s+=str;
if(mp.find(s)==mp.end())
{
mp[s]=++tag;
obj.cnt=1;
obj.s=s;
vec.push_back(obj);
}
else
{
i=mp[s];
vec[i-1].cnt+=1;
}
counter++;
s="";
}
for(i=0;i<vec.size();i++)
{
a=(vec[i].cnt/counter)*100;
vec[i].ans=a;
mp1[vec[i].s]=a;
st.insert(vec[i].s);
}
set<string>::iterator it;
if(flag)
{
puts("");
}
for(it=st.begin();it!=st.end();it++)
{
cout<<*it<<" ";
printf("%.4lf\n",mp1[*it]);
}
mp.clear();
mp1.clear();
st.clear();
vec.erase(vec.begin(),vec.end() );
flag=1;
}
return 0;
}