v=[0]*900 for _ in range(10): print('?','A',flush=True) ans=int(input()) if ans<900: v[ans]+=1 p=max(v) X=-1 for i in range(900): if v[i]==p: X=i v=[0]*900 for _ in range(10): print('?','B',flush=True) ans=int(input()) if ans<900: v[ans]+=1 p=max(v) Y=-1 for i in range(900): if v[i]==p: Y=i a,b,c=X,X,0 count=20 for i in range(10000): if i%2==0: while True: if i>0 and 2*c<=X*Y: print('+','C','C','B',flush=True) t=0 ans=int(input()) for j in range(5): print('?','B',flush=True) ans=int(input()) if ans==2*c: t+=1 if t>=5: b=2*c break else: print('+','A','C','B',flush=True) ans=int(input()) count+=1 t=0 for j in range(11): print('?','B',flush=True) ans=int(input()) if ans==a+c: t+=1 if t>=7: b=a+c break else: while True: if 2*b<=X*Y: print('+','B','B','C',flush=True) ans=int(input()) t=0 for j in range(11): print('?','C',flush=True) ans=int(input()) if ans==2*b: t+=1 if t>=7: c=2*b break else: print('+','A','B','C',flush=True) ans=int(input()) count+=1 t=0 for j in range(11): print('?','C',flush=True) ans=int(input()) if ans==a+b: t+=1 if t>=7: c=a+b break if b>X*Y: p=[1] print(p[1]) if c>X*Y: p=[1] print(p[1]) if b==X*Y: print('!','B',flush=True) exit() if c==X*Y: print('!','C',flush=True) exit() if Y%2==0: print('!','B',flush=True) else: print('!','C',flush=True) exit()