#include #include #include #define rep(i, n) for(i = 0; i < n; i++) using namespace std; int id, n, m; vector c; void playA() { vector cntA(m + 1), cntB(m + 1), cntAll(m + 1); for (int x: c) cntA[x]++; for (int i = 1; i <= m - 1; i++) { string s; cin >> s; cout << "ASK " << cntA[i] << endl; cout.flush(); int x, K; cin >> s >> x >> K; cin >> s; //WAIT cin >> s >> x >> K; cntB[i] = x; } if (m % 2 == 1) { //Aから開始 for (int i = 1; i <= m - 1; i += 2) { string s; cin >> s; // TURN cout << "ASK " << i << endl; cout.flush(); int x, K; cin >> s >> x >> K; cntAll[x] = K; if (i + 1 <= m - 1) { cin >> s; //WAIT cin >> s >> x >> K; cntAll[x] = K; } } } else { //Bから開始 for (int i = 1; i <= m - 1; i += 2) { string s; cin >> s; //WAIT int x, K; cin >> s >> x >> K; cntAll[x] = K; cin >> s; //TURN cout << "ASK " << i << endl; cout.flush(); cin >> s >> x >> K; cntAll[x] = K; } } int sumA = 0, sumB = 0, sumAll = 0; for (int i = 1; i <= m - 1; i++) { sumA += cntA[i]; sumB += cntB[i]; sumAll += cntAll[i]; } cntA[m] = n - sumA; cntB[m] = n - sumB; cntAll[m] = 3 * n - sumAll; vector cntC(m + 1); vector ans; for (int i = 1; i <= m; i++) { cntC[i] = cntAll[i] - cntA[i] - cntB[i]; for (int j = 0; j < cntC[i]; j++) { ans.push_back(i); } } string s; while (cin >> s) { if (s == "TURN") break; } cout << "GUESSED "; for (int i = 0; i < ans.size(); i++) { cout << ans[i]; if (i + 1 < ans.size()) cout << " "; } cout << endl; cout.flush(); } void playB() { vector cntA(m + 1), cntB(m + 1), cntAll(m + 1); for (int x: c) cntB[x]++; for (int i = 1; i <= m - 1; i++) { string s; cin >> s; //WAIT int x, K; cin >> s >> x >> K; cntA[i] = x; cin >> s; //TURN cout << "ASK " << cntB[i] << endl; cout.flush(); cin >> s >> x >> K; } if (m % 2 == 0) { //Bから開始 for (int i = 1; i <= m - 1; i += 2) { string s; cin >> s; // TURN cout << "ASK " << i << endl; cout.flush(); int x, K; cin >> s >> x >> K; cntAll[x] = K; if (i + 1 <= m - 1) { cin >> s; //WAIT cin >> s >> x >> K; cntAll[x] = K; } } } else { //Aから開始 for (int i = 1; i <= m - 1; i += 2) { string s; cin >> s; //WAIT int x, K; cin >> s >> x >> K; cntAll[x] = K; cin >> s; //TURN cout << "ASK " << i << endl; cout.flush(); cin >> s >> x >> K; cntAll[x] = K; } } int sumA = 0, sumB = 0, sumAll = 0; for (int i = 1; i <= m - 1; i++) { sumA += cntA[i]; sumB += cntB[i]; sumAll += cntAll[i]; } cntA[m] = n - sumA; cntB[m] = n - sumB; cntAll[m] = 3 * n - sumAll; vector cntC(m + 1); vector ans; for (int i = 1; i <= m; i++) { cntC[i] = cntAll[i] - cntA[i] - cntB[i]; for (int j = 0; j < cntC[i]; j++) { ans.push_back(i); } } string s; while (cin >> s) { if (s == "TURN") break; } cout << "GUESSED "; for (int i = 0; i < ans.size(); i++) { cout << ans[i]; if (i + 1 < ans.size()) cout << " "; } cout << endl; cout.flush(); } int main() { int i; cin >> id >> n >> m; c.resize(n); rep(i, n) cin >> c[i]; if (id == 1) { playA(); } else { playB(); } return 0; }