#include using namespace std; int command; int turn; int hand[5]; int card_played[15]; int value[15]; void trick() { int start_card; if (turn == 0) { cin >> start_card; card_played[start_card]++; } else { for (int i = 7; i <= 14; i++) value[i] = 0; for (int i = 1; i <= 4; i++) if (hand[i] == 10 || hand[i] == 14 || hand[i] == 7) value[hand[i]] += 3; else value[hand[i]] += 4; for (int i = 7; i <= 14; i++) if (value[i]) value[i] += 2 * card_played[i]; int max_val = 7; for (int i = 7; i <= 14; i++) if (value[i] > value[max_val]) max_val = i; for (int i = 1; i <= 4; i++) if (hand[i] == max_val) { cout << hand[i] << '\n'; card_played[hand[i]]++; start_card = hand[i]; hand[i] = 0; cout.flush(); //printError(); break; } } bool cut = true; while (cut) { cut = false; if (turn == 0) { for (int i = 1; i <= 4; i++) { if (hand[i] == start_card) { cout << hand[i] << '\n'; card_played[hand[i]]++; cout.flush(); hand[i] = 0; cut = true; //printError(); break; } } if (!cut) for (int i = 1; i <= 4; i++) { if (hand[i] == 7) { cout << hand[i] << '\n'; card_played[hand[i]]++; cout.flush(); hand[i] = 0; cut = true; //printError(); break; } } if (!cut) { bool played = false; for (int i = 1; i <= 4; i++) if (hand[i] && hand[i] != 10 && hand[i] != 14) { cout << hand[i] << '\n'; card_played[hand[i]]++; cout.flush(); hand[i] = 0; played = true; //printError(); break; } if (!played) { for (int i = 1; i <= 4; i++) if (hand[i]) { cout << hand[i] << '\n'; card_played[hand[i]]++; cout.flush(); hand[i] = 0; //printError(); break; } } } else { cin >> command; if (command < 7) { cut = false; break; } else { card_played[command]++; command = 0; } } } else { cin >> command; if (command < 7) break; else card_played[command]++; if (command != start_card && command != 7) { cout << 0 << '\n'; cout.flush(); command = 0; break; } else { for (int i = 1; i <= 4; i++) if (hand[i] == start_card || hand[i] == 7) { cout << hand[i] << '\n'; card_played[hand[i]]++; cout.flush(); hand[i] = 0; cut = true; //printError(); break; } command = 0; } if (!cut) { cout << 0 << '\n'; cout.flush(); //printError(); } command = 0; } } } void game() { for (int i = 1; i <= 14; i++) card_played[i] = 0; cin >> hand[1] >> hand[2] >> hand[3] >> hand[4]; turn = 0; while (1) { trick(); if (command == 0) cin >> command; if (command == 2 || command == 3) { //printError(); int n; cin >> n; while (n--) { int x; cin >> x; for (int i = 1; i <= 4; i++) if (hand[i] == 0) { hand[i] = x; break; } } if (command == 2) turn = 0; else turn = 1; command = 0; //printError(); } if (command == 4) { //printError(); cin >> command >> command; command = 0; break; } } } int main() { for (int i = 1; i <= 1000; i++) { game(); } return 0; }