#include <fstream>
#include <string>
using namespace std;
void init(bool karte[])
{
	for (int i=0;i<32;i++)
	  karte[i]=false;  
}
bool karte[32],sto[32];
bool igrac[10][32];
int ukupno,nereseno,n;
int dobio[10];
ifstream fin("poker.in");
ofstream fout("poker.out");
   

int skor(int brojIgraca)
{
  int i,j,k;
  bool pom[32];
  int boja[4];
  for (i=0;i<4;i++) boja[i]=0;
  int vrsta[8];
  for (j=0;j<8;j++) vrsta[j]=0;
  for (i=0;i<32;i++) pom[i]=false;
  for (i=0;i<4;i++)
    for (j=0;j<8;j++)
	  if (igrac[brojIgraca][8*i+j]||sto[8*i+j])
	  {
	    boja[i]++;  //brojimo karte iste boje
		vrsta[j]++;  //brojimo karte iste vrste
		pom[8*i+j]=true;
      }
  for (i=0;i<4;i++)
    if (pom[8*i+7]&&pom[8*i+6]&&pom[8*i+5]&&pom[8*i+4]&&pom[8*i+3])
	  return 800; //fles rojal
  for (i=0;i<4;i++)
    if (boja[i]>=5)
	  {
	    for (j=6;j>3;j--)
		  if (pom[8*i+j]&&pom[8*i+j-1]&&pom[8*i+j-2]&&pom[8*i+j-3]&&pom[8*i+j-4])
		    return 700+j; //fles, j najjaca karta
		for (j=7;j>=0;j--)
		  if (vrsta[j]==4)
		    return 600+j; //poker
	    for (j=7;j>=0;j--)
		  for (k=7;k>=0;k--)
		    if ((vrsta[j]==3) && (vrsta[k]>=2) && (j!=k))  //ful
			  return 500+10*j+k;
	    for (j=7;j>=0;j--)
		  if (pom[8*i+j]) //najjaca karta boje
		    return 400+j; //boja
	  }  
   for (j=7;j>=0;j--)
     if (vrsta[j]==4)
       return 600+j;  //poker, nije bilo boje
   for (j=7;j>=0;j--)
	  for (k=7;k>=0;k--)
	    if ((vrsta[j]==3) && (vrsta[k]>=2) && (j!=k))  //ful, nije bilo boje
		  return 500+10*j+k;
   for (j=7;j>3;j--)
	  if (vrsta[j]&&vrsta[j-1]&&vrsta[j-2]&&vrsta[j-3]&&vrsta[j-4])
	    return 300+j; //kenta, j najjaca karta   
   for (i=7;i>=0;i--)
     if (vrsta[i]==3)
	   return 200+i; //triling
   for (i=7;i>0;i--)
     if (vrsta[i]==2)
	 {
	   for (j=i-1;j>=0;j--)
	     if (vrsta[j]==2)
		    return 100+10*i+j; //dva para
	 }
   for (i=7;i>=0;i--)
     if (vrsta[i]==2)   
	   return 10+i; //par
   return 0; //nista ;-(
}


void izracunaj()
{
   int i,naj=0,max=0,t;
   bool jednako=true;
   for (i=0;i<n;i++)
   {
     t=skor(i);
	 if (t>max)
	 {
	   max=t;
	   naj=i;
	   jednako=false;
	 }
	 else if (t==max)
	   jednako=true;
   }
  ukupno++;
  if (jednako) {nereseno++; }
  else dobio[naj]++;
}


void gen(int k,int min)
{
  if (k==5)
    izracunaj();
  else
    for (int i=min;i<32;i++)
	  if (!karte[i])
	  {
	     karte[i]=true;
		 sto[i]=true;
		 gen(k+1,i+1);
		 karte[i]=false;
		 sto[i]=false;
	  }
}


int main()
{
   int i,t;
   string s;
   fin>>n;
   init(karte);
   ukupno=0;
   nereseno=0;
   for (i=0;i<n;i++)
   {
       dobio[i]=0;
       init(igrac[i]);
	   fin>>s;
	   t=0;
	   switch (s[0])
	   {
	      case 'T':t+=8;
		  case 'H':t+=8;
		  case 'K':t+=8;
	   }
	   fin>>s;
	   switch (s[0])
	   {
	       case 'A':t+=7;break;
		   case 'K':t+=6;break;
		   case 'Q':t+=5;break;
		   case 'J':t+=4;break;
		   case '1':t+=3;break;
		   default: t+=s[0]-'7';
	   }
	   igrac[i][t]=true;
	   karte[t]=true;
	   fin>>s;
	   t=0;
	   switch (s[0])
	   {
	      case 'T':t+=8;
		  case 'H':t+=8;
		  case 'K':t+=8;
	   }
	   fin>>s;
	   switch (s[0])
	   {
	       case 'A':t+=7;break;
		   case 'K':t+=6;break;
		   case 'Q':t+=5;break;
		   case 'J':t+=4;break;
		   case '1':t+=3;break;
		   default: t+=s[0]-'7';
	   }
	   igrac[i][t]=true;
	   karte[t]=true;
   }
   fin.close();
   init(sto);
   gen(0,0);
   for (i=0;i<n;i++)
     fout<<dobio[i]*100.0/ukupno<<endl;
   fout<<nereseno*100.0/ukupno<<endl;
   fout.close();
   return 0;
}

