#include #include #include #include #include #include #include #include #include #include #include #include #define mp make_pair #define f first #define s second using namespace std; tr1::unordered_map h,h2; set < string > V; pair < string , pair < int , int > >G[100]; bool cmp( pair < string , pair < int , int > > x , pair < string , pair < int , int > > y ) { if((x.s).f > (y.s).f ) return true; if((x.s).f == (y.s).f ) if( (x.s).s > (y.s).s ) return true; return false; } int main() { string s1 , s2 ; int p1 , p2; while( cin >> s1 >> s2 >> p1 >> p2) { V.insert(s1); V.insert(s2); if(p1 > p2 ) h[s1]+=3; else if( p1 < p2 ) h[s2]+=3; else if( p1 == p2 ) h[s1]++,h[s2]++; h2[s1]+=p1; h2[s2]+=p2; } int nr = 0; while(!V.empty()) { // cerr <<*V.begin() << " " << h[*V.begin()] << " " << h2[*V.begin()] << '\n'; G[++nr] = mp( *V.begin() , mp ( h[*V.begin()] , h2[*V.begin()] ) ); V.erase(V.begin()); } sort(G + 1 , G + nr + 1 , cmp ); for( int i = 1; i<=nr ; i++) cout << G[i].f << '\n'; return 0; }