#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; struct Team { public: string name; int goals; int points; Team() { name = ""; goals = 0; points = 0; } Team(string n, int g, int p) { name = n; goals = g; points = p; } }; struct comparat { bool operator()(Team const &Ta, Team const &Tb) const { if(Ta.points > Tb.points) { return 1; } else if(Ta.points < Tb.points) { return 0; }else { if(Ta.goals > Tb.goals) { return 1; } else if(Ta.goals < Tb.goals) { return 0; } else { return Ta.name < Tb.name; } } } }; vector v; string n1, n2; int g1, g2; set s; int main() { // freopen("date.in", "r", stdin); // freopen("date.out","w", stdout); for(int i = 0; i < 6; i++) { cin >> n1 >> n2 >> g1 >> g2; int p1 = 0, p2 = 0; if(g1 == g2) { p1 = 1; p2 = 1; } else if(g1 > g2) { p1 = 3; } else if (g2 > g1){ p2 = 3; } if(s.count(n1) == 0) { Team n = Team(n1, g1, p1); v.push_back(n); s.insert(n1); } else { for(int i = 0; i < (int) v.size(); i++) { if(v[i].name == n1) { v[i].goals += g1; v[i].points += p1; } } } if(s.count(n2) == 0) { Team n = Team(n2, g2, p2); v.push_back(n); s.insert(n2); } else { for(int i = 0; i < (int) v.size(); i++) { if(v[i].name == n2) { v[i].goals += g2; v[i].points += p2; } } } } sort(v.begin(), v.end(), comparat()); for(int i = 0; i < v.size(); i++) { cout << v[i].name << "\n"; } return 0; }