import sys input = sys.stdin.readline enum = enumerate inf = 1001001001 MOD = 10**9 + 7 import collections as cl import itertools as it import random from bisect import bisect_right as bs_r def linput(ty=int, cvt=list): return cvt(map(ty,input().split())) def vinput(rep=1, ty=int, cvt=list): return cvt(ty(input().rstrip()) for _ in range(rep)) def drint(*v, **d): if 1: print(*v, **d, file=sys.stderr) def dist(x1,y1,x2,y2): return abs(x1-x2)+abs(y1-y2) #vD = [chr(ord("a")+i) for i in range(26)] vD = [(-1,0),(0,-1),(0,1),(1,0)] vT = "0123456789" def bye(res): sT = "No Yes".split() print(sT[res]) #exit(0) def main(): print("? 0 0", flush=True) A, = linput() print("? 100 0", flush=True) B, = linput() res = 0 for p in range(0,101): for q in range(0,101): ta = p**2 + q**2 tb = (100-p)**2 + q**2 if ta==A and tb==B: print("!",p,q) return drint("not found") #for vr in mR: # print(*vr, sep="") #print(res) if __name__ == "__main__": main()