// Kount problem
// 2005 ECNA ACM Regional Prgramming contest
// t feil

#include <iostream>
using namespace std;


int n,d,k, Most[1000], Howmany[1000], node[1000], children[1000][1000];
char names[1000][11];

void ZeroOut(){
  for(int i=0;i<1000;i++){
    Most[i] = Howmany[i]=node[i]=0;
    strcpy(names[i],"");
    for(int j=0;j<1000;j++) children[i][j]=0;
  }
}

int findname(char w[11]){
  int i=0;   // k = next open slot in names
  while(i<k && strcmp(names[i],w)) i++;
    if (i==k) strcpy(names[k++],w);     //insert w if not already there
  return i;
}

void ProcessLine(){
  char w[11];
  int pos,m,pos1;

  cin>>w;
  pos=findname(w);
  cin>>m;
  for(int i=0;i<m;i++){
    cin>>w;
    pos1=findname(w);
    children[pos][pos1]=1;
  }
}

int CountEm(int i, int d){
  int total = 0;
  for(int j=0;j<k;j++)
    if(children[i][j])
      if(d==1) total++;
      else
        total += CountEm(j,d-1);

  return total;
}

void Insert(int i, int m){ //already Most[0..i-1] inserted
  //find spot
  int j=0;
  while(j<i && (Howmany[j]>m || (Howmany[j]==m && strcmp(names[Most[j]],names[i])<0)))
    j++;
  //i goes in spot j - shift evrthing down
  for (int k=i-1;k>=j;k--){
    Most[k+1]=Most[k];
    Howmany[k+1]=Howmany[k];
  }
  Most[j]=i; Howmany[j]=m;
}

void Print(){
  int numberprinted=0;
  int i=0;
  while(numberprinted<3&& Howmany[i]>0){
//    cout<<names[Most[i]]<<' '<<Howmany[i++]<<endl;
    cout<<names[Most[i]]<<' ';
    cout<<Howmany[i++]<<endl;
    numberprinted++;
  }
  //print ties
  while(Howmany[i]>0 && Howmany[i]==Howmany[i-1]) {
//    cout<<names[Most[i]]<<' '<<Howmany[i++]<<endl;
    cout<<names[Most[i]]<<' ';
    cout<<Howmany[i++]<<endl;
  }

}

int main(){
  int m, tree;

  cin>>tree;
  for(int i=1;i<=tree;i++){
    cin>>n>>d;
    ZeroOut();
    k=0;

    for(int j=0;j<n;j++)
      ProcessLine();

   //count d-descendants for each node and sort into Most
    for(j=0;j<k;j++){
      m = CountEm(j,d);
      if(m>0) Insert(j,m);
    }

    cout<<"Tree "<<i<<':'<<endl;
    Print();  //Print results;
    if(i<tree) cout<<endl;
  }
return 0;
}
