import sys p, n, m = map(int, input().split()) C = [0] + [0] * n A = list(map(int, input().split())) AA = A[:] B = [] A.sort() if 1 in A: A = A[1:] AC = [0] + [0] * m for i in A: AC[i] += 1 Q_list = [] for i in range(m + 1): if AC[i] != 0: Q_list.append((AC[i], i)) Q_list.sort() QQ = [] pre = 1 for I in Q_list: while I[0] != pre: pre += 1 QQ.append((0, 1)) QQ.append(I) Ans = {} q_idx = 0 fin = 0 while True: try: # TURN, WAIT, END のいずれかを受け取る line = input().strip() except EOFError: break # 終了シグナルを受け取ったらループを抜ける if line.startswith("END"): break if line == "TURN": if q_idx < len(QQ): # 質問フォーマットを "ASK X" に修正し、flush print(f"ASK {QQ[q_idx][1]}", flush=True) q_idx += 1 # 自分の質問の結果を受け取る res_line = input().split() if res_line[0] == "COUNT": Ans[int(res_line[1])] = int(res_line[2]) else: BC = [] c = 0 for i in B: if i == 1: c += 1 else: for j in range(c): BC.append(i) while len(BC) < n: BC.append(1) G = [] for i in range(m + 1): # 辞書にキーがない場合のエラーを防ぐため .get() を使用 count_diff = Ans.get(i, 0) - AA.count(i) - BC.count(i) for j in range(max(0, count_diff)): G.append(i) while len(G) < n: G.append(m) # GUESS は昇順ソートが必須のためソートする G.sort() # 念のため、要素数がN個になるようにスライス(バグによる超過防止) G = G[:n] # 回答フォーマットを "GUESS ..." に修正し、flush print("GUESS", *G, flush=True) # 自分の回答の結果を受け取る res_line = input().split() if res_line[0] == "GUESSED": if int(res_line[2]) == 1: fin += 1 elif line == "WAIT": # 相手のターンの結果を受け取る res_line = input().split() if res_line[0] == "COUNT": Ans[int(res_line[1])] = int(res_line[2]) B.append(int(res_line[1])) elif res_line[0] == "GUESSED": if int(res_line[2]) == 1: fin += 1