#include <iostream>
#include <unordered_map>
#include <algorithm>
using namespace std;

#define P first
#define G second

unordered_map<string, pair<int,int> > M;

int main()
{
    string x, y;
    for (int i = 1, a, b; i <= 6; ++i)
    {
        cin >> x >> y >> a >> b;
        M[x].G += a;
        M[y].G += b;
        if (a > b)
            M[x].P += 3;
        if (b > a)
            M[y].P += 3;
        if (a == b)
            M[x].P++, M[y].P++;
    }
    int mxg, mxp;
    mxg = mxp = 0;
    string mxs;
    for (auto i = M.begin(); i != M.end(); ++i)
    {
        if (mxp < (*i).G.P)
            mxp = (*i).G.P, mxs = (*i).P;
        if (mxp == (*i).G.P && mxg < (*i).G.G)
            mxg = (*i).G.G, mxs = (*i).P;
    }
    for (auto i = M.begin(); i != M.end(); ++i)
        if ((*i).P == mxs)
            {M.erase(i); break;}
    cout << mxs << '\n';
    mxg = mxp = 0;

    for (auto i = M.begin(); i != M.end(); ++i)
    {
        if (mxp < (*i).G.P)
            mxp = (*i).G.P, mxs = (*i).P;
        if (mxp == (*i).G.P && mxg < (*i).G.G)
            mxg = (*i).G.G, mxs = (*i).P;
    }
    for (auto i = M.begin(); i != M.end(); ++i)
        if ((*i).P == mxs)
            {M.erase(i); break;}
    cout << mxs << '\n';
    mxg = mxp = 0;

    for (auto i = M.begin(); i != M.end(); ++i)
    {
        if (mxp < (*i).G.P)
            mxp = (*i).G.P, mxs = (*i).P;
        if (mxp == (*i).G.P && mxg < (*i).G.G)
            mxg = (*i).G.G, mxs = (*i).P;
    }
    for (auto i = M.begin(); i != M.end(); ++i)
        if ((*i).P == mxs)
            {M.erase(i); break;}
    cout << mxs << '\n';
    mxg = mxp = 0;

    for (auto i = M.begin(); i != M.end(); ++i)
    {
        if (mxp < (*i).G.P)
            mxp = (*i).G.P, mxs = (*i).P;
        if (mxp == (*i).G.P && mxg < (*i).G.G)
            mxg = (*i).G.G, mxs = (*i).P;
    }
    for (auto i = M.begin(); i != M.end(); ++i)
        if ((*i).P == mxs)
            {M.erase(i); break;}
    cout << mxs << '\n';
}