import math import sys def quit(): print("! -1") sys.exit(0) def query(x, y): print(f"? {x} {y}") output = int(input()) if output == -1: sys.exit() return output def solve(n: int): assert 2 <= n if n == 2: if query(0, 1) == 1: print("! 11") else: quit() return products = [query(i, n - 1) for i in range(n - 1)] products.reverse() gcd = products[0] for product in products: gcd = math.gcd(gcd, product) if gcd == 0: quit() candidates = [] last_query = query(0, 1) for first_digit in range(1, 10): if gcd % first_digit != 0: continue trying = [first_digit] trying.extend(product // first_digit for product in products) if ( all(0 <= digit <= 9 for digit in trying) and last_query != trying[-1] * trying[-2] ): candidates.append(trying) if len(candidates) != 1: quit() else: print(f"! {candidates[0]}")