#include using namespace std ; typedef struct { string name ; int goals ; int points ; }teams ; int comp(const void *a, const void *b) { int p1 =((teams*)a)->points ; int p2 =((teams*)b)->points ; int g1 =((teams*)a)->goals ; int g2 =((teams*)b)->goals ; string name1 = ((teams*)a)->name ; string name2 = ((teams*)b)->name ; return p2 > p1 || (p1 == p2 && g2 > g1) || (p1 == p2 && g2 == g1 && name2 < name1 ) ; } int main( int argc , char ** argv ) { //freopen("input.in","r" ,stdin) ; teams t[6] ; static int crap = 0 ; for ( int i = 1 ; i <= 6 ; ++ i ) { string s ; getline ( cin , s ) ; istringstream iss ( s ) ; string t1 , t2 ; int g1 ,g2 ; iss >> t1 >> t2 >> g1 >> g2 ; int t1i , t2i ; int j; for ( j = 0 ; j < 4 ; ++ j ) { if (t[j].name == t1 ){ t1i = j ; break ; } } if (j == 4 ) { t1i = crap ; t[t1i].name = t1 ; t[t1i].goals = 0 ; t[t1i].points = 0 ; crap ++ ; } for ( j = 0 ; j < 5 ; ++ j ) { if (t[j].name == t2 ){ t2i = j ; break ;} } if (j == 5 ) { t2i = crap ; t[t2i].name = t2 ; t[t2i].goals = 0 ; t[t2i].points = 0 ; ++ crap ; } if ( g1 > g2 ) t[t1i].points += 3 ; else if ( g1 < g2 ) t[t2i].points += 3 ; else { t[t1i].points += 1 ; t[t2i].points += 1 ; } t[t1i].goals += g1 ; t[t2i].goals += g2 ; } qsort(t,4,sizeof(teams),comp) ; for ( int i = 0 ; i < 4 ; ++ i ) { cout << t[i].name << '\n' ; } return 0 ; }