#include #include // based on problem 11218 // brute force solution (try all pairs of teams) works int main() { int mem[720][5]; int time[720]; int n; cin >> n; while (n!=0) { for (int i=0; i < n; i++) { for (int j=0; j < 4; j++) cin >> mem[i][j]; cin >> time[i]; } int best = 130000; for (int i=0; i < n; i++) for (int j=0; j < n; j++) if (i!=j && time[i]+time[j] < best) { bool used[14] = {0}; bool disjoint = 1; for (int k=0; k<4; k++) used[mem[i][k]] = 1; for (int k=0; k<4; k++) disjoint = disjoint && !used[mem[j][k]]; if (disjoint) best = time[i]+time[j]; } cout << (best < 130000 ? best : -1) << "\n"; cin >> n; } }