#include <bits/stdc++.h>
#define MOD 1000000007
#define Nmax 1000005
#define INF 2000000000
#define eps 0.000000000001

using namespace std;

inline int Cmp(char a[], int n, char b[], int m)
{
    int i;
    for(i=1;i<=n && i<=m && a[i]==b[i];++i);
    if(i>n)
    {
        if(i>m) return 0;
        return 2;
    }
    else
    {
        if(i>m) return 1;
        if(a[i]>b[i]) return 1;
        return 2;
    }
}

struct el
{
    char nume[105];
    int pc,nr,lnume;
} a[105];
int n;

inline bool Cmp(el A, el B)
{
    if(A.pc==B.pc)
    {
        if(A.nr==B.nr)
            return (Cmp(A.nume,A.lnume,B.nume,B.lnume)==1);
        return A.nr>B.nr;
    }
    return A.pc>B.pc;
}

inline int Find(char sir[], int len)
{
    int i;
    for(i=1;i<=n;++i)
        if(Cmp(sir,len,a[i].nume,a[i].lnume)==0) return i;
    ++n;
    a[n].lnume=len;
    for(i=1;i<=len;++i) a[n].nume[i]=sir[i];
    return n;
}

int main()
{
    int i,j,x,y,l1,l2,p1,p2;
    char s1[105],s2[105];
    #ifndef ONLINE_JUDGE
        freopen ("date.in","r",stdin);
        freopen ("date.out","w",stdout);
    #endif
    for(i=1;i<=6;++i)
    {
        cin>>(s1+1)>>(s2+1)>>x>>y;
        l1=strlen(s1+1);
        l2=strlen(s2+1);
        p1=Find(s1,l1);
        p2=Find(s2,l2);
        if(x>y)
            a[p1].pc+=3;
        else
            if(x==y)
            {
                a[p1].pc++;
                a[p2].pc++;
            }
            else
                a[p2].pc+=3;
        a[p1].nr+=x; a[p2].nr+=y;
    }
    for(i=1;i<=4;++i)
        for(j=i+1;j<=4;++j)
            if(Cmp(a[i],a[j]))
            {
                swap(a[i],a[j]);
                j=i;
            }

    for(i=4;i>=1;--i)
    {
        for(j=1;j<=a[i].lnume;++j) cout<<a[i].nume[j];
        cout<<"\n";
    }
    return 0;
}