# include <algorithm>
# include <queue>
# include <iostream>
# include <cstring>
# include <cmath>
# include <cstdio>
# define NR 1005
using namespace std;
char sol[10][505];
int pct[10], gol[10];
void swappp(int i){char aux[500];pct[i] = pct[i] + pct[i + 1] - (pct[i + 1] = pct[i]);gol[i] = gol[i] + gol[i + 1] - (gol[i + 1] = gol[i]);strcpy(aux, sol[i]); strcpy(sol[i], sol[i + 1]); strcpy(sol[i + 1], aux);
}

int main()
{
    int n = 0;
    //citim 6 striguri
    for(int i=1; i<=6; ++i)
    {
    char ech1[505], ech2[505];
    int g1, g2;
    bool VV1 = false, VV2 = false;
    scanf("%s %s %d %d\n", ech1, ech2, &g1, &g2);
    for(int j = 1; j <= n; ++j){

    int aux = strcmp(ech1, sol[j]);
    if(aux == 0){

    VV1 = true;
    if(g1 > g2) pct[j] += 3;
    if(g1 == g2) pct[j] += 1;
    gol[j] += g1;
            }
    else{
    aux = strcmp(ech2, sol[j]);
    if(aux == 0){

    VV2 = true;
    if(g2 > g1) pct[j] += 3;
    if(g2 == g1) pct[j] += 1;
    gol[j] += g2;
            }
            }
        }
        //

    if(!VV1){

    ++n;
    strcpy(sol[n], ech1);
    if(g1 > g2) pct[n] += 3;
    if(g1 == g2) pct[n] += 1;
    gol[n] += g1;
        }
        //

    if(!VV2){
    ++n;
    strcpy(sol[n], ech2);
    if(g2 > g1) pct[n] += 3;
    if(g1 == g2) pct[n] += 1;
    gol[n] += g2;
        }
    }
    bool e = false;
    while(!e){

        e = true;
        for(int i = 1; i < n; ++i)
    if(pct[i] < pct[i + 1]){

    swappp(i);
    e = false;
    }
    else if(pct[i] == pct[i + 1])
    {

    if(gol[i] < gol[i + 1]){

    swappp(i);
    e = false;
    }

    else if(gol[i] == gol[i + 1]){

    int x = strcmp(sol[i], sol[i + 1]);
    if(x > 0)
    {
    swappp(i);
    e = false;
    }}}
    }
    for(int i = 1; i <= n; ++i) cout<<sol[i]<<"\n";
    return 0;
}