P = [] for i in [-1, 0, 1]: for j in [-1, 0, 1]: for k in [-1, 0, 1]: P.append([i, j, k]) offset = [0, 0, 0] d = 50 while d > 0: min_val = 10000000000 for p in P: print('? {x} {y} {z}'.format(x=offset[0]+p[0]*d, y=offset[1]+p[1]*d, z=offset[2]+p[2]*d)) D = int(input()) if D < min_val: min_val = D min_p = p offset = [offset[0] + min_p[0] * d, offset[1] + min_p[1] * d, offset[2] + min_p[2] * d] d //= 2 print('! {x} {y} {z}'.format(x=offset[0], y=offset[1], z=offset[2]))