#define _CRT_SECURE_NO_DEPRECATE

#include <iostream>
#include <cstdio>
#include <vector>
#include <string>
#include <algorithm>
#include <list>
#include <iterator>
using namespace std;

char T1[101], T2[101];
int G1, G2, p, nrT, ok1, ok2;

struct Team{
	int G, P;
	char Name[101];
}T[5];

int main(){
	int i, j;

	//freopen("test.in", "r", stdin);
	//freopen("test.out", "w", stdout);

	for (i = 1; i <= 6; i++){
		scanf("%s %s %d %d", T1, T2, &G1, &G2);
		
		G1 == G2 ? p = 1 : (G1 > G2 ? p = 3 : p = 0);
		
		ok1 = 0; ok2 = 0;
		for (j = 1; j <= nrT; j++){
			if (strcmp(T[j].Name, T1) == 0 && !ok1){
				ok1 = 1; 
				T[j].G += G1; 
				T[j].P += p;
			}
			else if ((strcmp(T[j].Name, T2) == 0 && !ok2)){
				ok2 = 1;
				T[j].G += G2;
				T[j].P += (p == 1 ? p : 3 - p);
			}
		}
		if (!ok1) {
			++nrT;
			strcpy(T[nrT].Name, T1);
			T[nrT].G += G1;
			T[nrT].P += p;
		}
		if (!ok2) {
			++nrT; 
			strcpy(T[nrT].Name, T2);
			T[nrT].G += G2; 
			T[nrT].P += (p == 1 ? p : 3 - p);
		}
	}

	// sort
	for (i = 1; i < 4; i++){
		for (j = i + 1; j > 1; j--){
			if (T[j].P > T[j-1].P){
				swap(T[j].P, T[j-1].P);
				swap(T[j].G, T[j-1].G);
				swap(T[j].Name, T[j-1].Name);
			}
			else if (T[j].P == T[j-1].P){
				if (T[j].G > T[j-1].G){
					swap(T[j].P, T[j-1].P);
					swap(T[j].G, T[j-1].G);
					swap(T[j].Name, T[j-1].Name);
				}
				else if (T[j].G == T[j-1].G){
					if (strcmp(T[j].Name, T[j-1].Name) == -1){
						swap(T[j].P, T[j-1].P);
						swap(T[j].G, T[j-1].G);
						swap(T[j].Name, T[j-1].Name);
					}
					else break;
				}
				else break;
			}
			else break;
		}
	}

	for (i = 1; i < 5; i++) printf("%s\n", T[i].Name);

	return 0;
}