#include<iostream>
#include<string>
#include<stdio.h>
#include<algorithm>
#include<map>
#include<set>
#include<vector>
#include<cstring>
//#include<conio.h>
using namespace std;
typedef struct { string name; int scor, nrg; } tip;
tip a[5];
int i,j,s1,s2,nr;

bool cmp(tip a, tip b) {
 
  if (a.scor!=b.scor) return a.scor>b.scor;
  else if (a.nrg!=b.nrg) return a.nrg>b.nrg;
  else return a.name<b.name;    
     
}

void addnrg(string name, int nrg) {
   
   bool ok=0;
   
   for (int k=1; k<=nr; ++k)
    if (a[k].name==name) { ok=1; a[k].nrg+=nrg; }
    
   if (ok==0) {
              ++nr;
              a[nr].name=name;
              a[nr].nrg=nrg;
              a[nr].scor=0;
              }
}

void addscor(string name, int scor) {
    
    for (int k=1; k<=nr; ++k)
    if (a[k].name==name) a[k].scor+=scor; 
     
}

int main(void) {
    //freopen("file.in","r",stdin);
    
    string n1, n2;
    
    for (i=1; i<=6; ++i) {
        
        cin>>n1>>n2>>s1>>s2;
        
        addnrg(n1,s1);
        addnrg(n2,s2);
        
        if (s1>s2) addscor(n1,3);
        else if (s2>s1) addscor(n2,3);
        else { addscor(n1,1); addscor(n2,1); }
        
        }
        
    sort(a+1,a+4+1,cmp);
    
    for (i=1; i<=4; ++i) cout<<a[i].name<<"\n";
    
    
    //getch();
    
    return 0;
}