#include <fstream>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

ifstream fin("date.in");
ofstream fout("date.out");

struct team
{
    char nume[105];
    int scor,goluri;
}E[5];

int f(team i, team j)
{
    return (i.scor>j.scor);
}

int main()
{
    int i, j;
    char t1[105], t2[105];
    int ech1, ech2;
    int g1, g2;

    for(i=1; i<=6; i++)
    {
        cin>>t1>>t2>>g1>>g2;

        //Primul sogor
        for(j=1; j<=4; j++)
        {
            if(strlen(E[j].nume) > 0)
            {
                if(strcmp(E[j].nume, t1) == 0)
                {
                    //Aici vine smecheria
                    E[j].goluri += g1;
                    ech1 = j;
                }
            }
            else
            {
                strcpy(E[j].nume, t1);
                E[j].goluri += g1;
                ech1 = j;
                break;
            }
        }

        //Al doilea sogor
        for(j=1; j<=4; j++)
        {
            if(strlen(E[j].nume) > 0)
            {
                if(strcmp(E[j].nume, t2) == 0)
                {
                    //Aici e alta smecherie identica
                    E[j].goluri += g2;
                    ech2 = j;
                }
            }
            else
            {
                strcpy(E[j].nume, t2);
                E[j].goluri += g2;
                ech2 = j;
                break;
            }
        }

        if(g1 > g2)
        {
            E[ech1].scor += 3;
        }
        else
        if(g1 < g2)
        {
            E[ech2].scor += 3;
        }
        else
        {
            E[ech1].scor += 1;
            E[ech2].scor += 1;
        }
    }

    sort(E+1,E+5,f);


    for(i=1; i<=4; i++)
    {
        cout<<E[i].nume<<'\n';
    }

    fin.close(); fout.close();
    return 0;
}