#include <cstdio>
#include <algorithm>

using namespace std;

struct str{int g,S,h;};
str s[10];
char a[505],v[505],V[505],t1[505],t2[505],t3[505],t4[505];
int n,i,T1,T2,nr1,nr2,p,nr,z,q,j;

inline void cop(char x[],char y[])
{
    int i;

    for(i=0;i<=500;++i)
    x[i]=y[i];

}

bool compar(char x[],char y[])
{
    int i;

    for(i=0;i<=500;++i)
    if(x[i]<y[i]) return true;
    else if(x[i]>y[i]) return false;

    return true;

}

bool egal(char x[],char y[])
{

    int i;

    for(i=0;i<=500;++i)
    if(x[i]<y[i]) return false;
    else if(x[i]>y[i]) return false;

    return true;

}

bool cmp(str x,str y)
{
    int x1,x2;

    if(x.S>y.S) return true;
    if(x.S<y.S) return false;


    if(x.g>y.g) return true;
    if(x.g<y.g) return false;

    x1=x.h;
    x2=y.h;

    if(x1==1 && x2==2) return compar(t1,t2);
    if(x1==1 && x2==3) return compar(t1,t3);
    if(x1==1 && x2==4) return compar(t1,t4);

    if(x1==2 && x2==1) return compar(t2,t1);
    if(x1==2 && x2==3) return compar(t2,t3);
    if(x1==2 && x2==4) return compar(t2,t4);

    if(x1==3 && x2==1) return compar(t3,t1);
    if(x1==3 && x2==2) return compar(t3,t2);
    if(x1==3 && x2==4) return compar(t3,t4);

    if(x1==4 && x2==1) return compar(t4,t1);
    if(x1==4 && x2==2) return compar(t4,t2);
    if(x1==4 && x2==3) return compar(t4,t3);

    return false;

}

void sterge(char x[])
{
    int i;

    for(i=0;i<=500;++i)
    x[i]='0';


}

int main()
{
    nr=1;int ii;

    for(ii=1;ii<=6;++ii)
    {
       gets(a);T1=T2=-1;sterge(v);
       sterge(V);
       //////////////////////////////////////////////
       p=0;z=0;
       while(a[p]!=' ')
       {
          v[++z]=a[p];
          ++p;

       }

       if(nr<=4 && !(egal(v,t1) || egal(v,t2) || egal(v,t3) || egal(v,t4)))
       {
          if(nr==1) {cop(t1,v);T1=1;}
          else if(nr==2) {cop(t2,v);T1=2;}
          else if(nr==3) {cop(t3,v);T1=3;}
          else if(nr==4) {cop(t4,v);T1=4;}

          ++nr;

       }

       /////////////////////////////////

        p++;z=0;
       while(a[p]!=' ')
       {
          V[++z]=a[p];
          ++p;

       }

       if(nr<=4 && !(egal(V,t1) || egal(V,t2) || egal(V,t3) || egal(V,t4)))
       {
          if(nr==1) {cop(t1,V);T2=1;}
          else if(nr==2) {cop(t2,V);T2=2;}
          else if(nr==3) {cop(t3,V);T2=3;}
          else if(nr==4) {cop(t4,V);T2=4;}

          ++nr;

       }

        if(T1==-1)
        {
            if(egal(v,t1)) T1=1;
            else if(egal(v,t2)) T1=2;
            else if(egal(v,t3)) T1=3;
            else T1=4;

        }
        if(T2==-1)
        {
            if(egal(V,t1)) T2=1;
            else if(egal(V,t2)) T2=2;
            else if(egal(V,t3)) T2=3;
            else T2=4;

        }
        nr1=nr2=0;++p;
        while(a[p]<='9' && a[p]>='0')
        {

            nr1=nr1*10+a[p]-'0';++p;
        }
        ++p;
        while(a[p]<='9' && a[p]>='0')
        {

            nr2=nr2*10+a[p]-'0';++p;
        }

        if(nr1>nr2)
            s[T1].S+=3;
        else if(nr1==nr2)
        {
            s[T1].S++;
            s[T2].S++;
        }
        else s[T2].S+=3;

        s[T1].g+=nr1;
        s[T2].g+=nr2;

    }

    s[1].h=1;s[2].h=2;s[3].h=3;s[4].h=4;

    sort(s+1,s+5,cmp);

    for(i=1;i<=4;++i)
    {
        q=s[i].h;
        j=1;

        if(q==1)
        while(t1[j]!='0')
        {
            printf("%c",t1[j]);
            ++j;
        }
        else if(q==2)
        while(t2[j]!='0')
        {
            printf("%c",t2[j]);
            ++j;
        }
        else if(q==3)
        while(t3[j]!='0')
        {
            printf("%c",t3[j]);
            ++j;
        }
        else if(q==4)
        while(t4[j]!='0')
        {
            printf("%c",t4[j]);
            ++j;
        }

        printf("\n");
    }


    return 0;
}