#include #include #include using namespace std; #define P first #define G second unordered_map > 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'; }