#include <fstream> #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cstdlib> #include <vector> #include <bitset> #include <queue> #include <map> #include <set> #include <cmath> #include <iomanip> #define pb push_back #define mp make_pair #define sortvi(a) sort(a.begin(), a.end()) #define FOR(i, start, final) for (int i=start; i<=final; ++i) #define ROF(i, start, final) for (int i=start; i>=final; --i) #define f cin #define g cout //void f(int &x){char k;for(k=getchar();k<= 32;k=getchar());for(x=0;'0'<=k;k=getchar())x=x*10+k-'0';} /*void f(int &x)//parsare cu semn { char k; bool semn=0; for (k = getchar(); (k>'9' || k<'0');) { if (k=='-') semn=1; k=getchar(); } for (x = 0; '0' <= k; k = getchar()) x = x * 10 + k - '0'; if (semn==1) x=-x; }*/ using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair < int, int> pi; typedef vector< int > vi; typedef vector< pair< int, int > > vpi; struct asd { string s; int nrg, nrp; }A[5]; string s1, s2, s3, s4; vector <string> v; int nr1, nr2; bool cmp(asd X, asd Y) { if (X.nrp>Y.nrp) return 1; if (X.nrp==Y.nrp) { if (X.nrg>Y.nrg) return 1; if (X.nrg==Y.nrg) { if (X.s<Y.s)return 1; return 0; } return 0; } return 0; } //ifstream f("test.in");ofstream g("test.out"); int main() { FOR(k,1,6) { f>>s1>>s2>>nr1>>nr2; int n1=0, n2=0, ok1=0, ok2=0; for(; n1<v.size(); ++n1)if (v[n1]==s1) ok1=1; for(; n2<v.size(); ++n2)if (v[n2]==s2) ok2=1; if (ok1==0) v.pb(s1); if (ok2==0) v.pb(s2); n1=n2=0; for(; n1<v.size(); ++n1) if (v[n1]==s1) break; for(; n2<v.size(); ++n2) if (v[n2]==s2) break; A[n1+1].s=s1;A[n2+1].s=s2; A[n1+1].nrg+=nr1;A[n2+1].nrg+=nr2; if (nr1>nr2) A[n1+1].nrp+=3; else if (nr2>nr1) A[n2+1].nrp+=3; if (nr1==nr2) ++A[n1+1].nrp, ++A[n2+1].nrp; } //FOR(i,1,4)g<<A[i].s<<' '<<A[i].nrp<<' '<<A[i].nrg<<'\n'; sort(A+1, A+5, cmp); for (int i=1; i<5; ++i)g<<A[i].s<<'\n'; return 0; }