#yukicoder394A ''' xを選ぶ。x+A % B を訊ねる。 中国剰余定理に持ち込みたいが、さてどうする。 x=0 とすればAが割れないか?そんなことないか。x=1でよさそうか。 0が返ってきた場合、A+1=B が保障される。えー 詰みか? わからないのでバカ全探索しておく。 ''' ''' ■全探索: x=50 のときにうまくいくらしい for x in range(1,101): #1個目の質問 C=[set() for _ in range(101)] #質問xの余りごとに分類 for A in range(1,100): for B in range(A+1,101): C[(x+A)%B].add((A,B)) #2個目の質問を行う 分類ごとに質問を変えて良い for St in C: for y in range(1,101): if x==y: continue Z=set(); hantei=1 for now in St: A,B=now t=(y+A)%B if t in Z: hantei=0 else: Z.add(t) if not hantei: continue else: break else: break else: print(x); break ''' #x=50 のときの分類を行う C=[set() for _ in range(101)]; x=50 for A in range(1,100): for B in range(A+1,101): C[(50+A)%B].add((A,B)) #余りごとに対応を考える print('?',50) N=int(input()); Candidate=C[N] if len(Candidate)==1: A,B=Candidate.pop(); print('!',A,B); exit() #残り候補から絞り込みを行う for y in range(1,101): Z=set() for A,B in Candidate: Z.add((y+A)%B) if len(Z)!=len(Candidate): continue else: break print('?',y); M=int(input()) #候補を全探索し、余りがMになるものを探す for A,B in Candidate: if (y+A)%B==M: print('!',A,B); exit()