#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

struct str_ekipa{
	string ime;
	int tocke, dosezeni, prejeti;//zadetki
	int razlika;
}ekipa[4];

bool f(str_ekipa a, str_ekipa b){
	if(a.tocke != b.tocke){return (a.tocke > b.tocke);}
	if(a.dosezeni != b.dosezeni){return (a.dosezeni > b.dosezeni);}
	if( a.ime.compare(b.ime) < 0){
		return true;
	}
	return false;
}


int main(){
	int counter = 0;
	string s1, s2;
	int g1, g2;
	bool p1, p2;
	for(int i=0; i<6; i++){//polnjenje tabele
		cin>>s1>>s2>>g1>>g2;
		p1 = p2 = false;
		for(int x = 0; x<counter; x++){
			if(ekipa[x].ime.compare(s1) == 0){
				p1 = true;
				ekipa[x].dosezeni+=g1;
				ekipa[x].prejeti+=g2;
				if(g1>g2){ekipa[x].tocke+=3;}
				else if(g1 == g2){ekipa[x].tocke++;}
			}
			else if(ekipa[x].ime.compare(s2) == 0){
				p2 = true;
				ekipa[x].dosezeni += g2;
				ekipa[x].prejeti += g1;
				if(g2 > g1){ekipa[x].tocke+=3;}
				else if(g1 == g2){ekipa[x].tocke++;}
			}
		}
		if(p1 == false){
			ekipa[counter].ime = s1;
			ekipa[counter].dosezeni = g1;
			ekipa[counter].prejeti = g2;
			if(g1 > g2){ekipa[counter].tocke = 3;}
			else if(g1 == g2){ekipa[counter].tocke = 1;}
			else{ekipa[counter].tocke = 0;}
			counter++;
		}
		if(p2 == false){
			ekipa[counter].ime = s2;
			ekipa[counter].dosezeni = g2;
			ekipa[counter].prejeti = g1;
			if(g2 > g1){ekipa[counter].tocke = 3;}
			else if(g1 == g2){ekipa[counter].tocke = 1;}
			else{ekipa[counter].tocke = 0;}
			counter++;
		}
	}
	for(int i=0; i<4; i++){
		ekipa[i].razlika = ekipa[i].dosezeni - ekipa[i].prejeti;
	}

	sort(ekipa, ekipa+4, f);
	for(int i=0; i<4; i++){
		cout<<ekipa[i].ime<<'\n';
	}
	return 0;
}