#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;
}