P = [[1, 1, 1], [1, 1, -1], [1, -1, 1], [-1, 1, 1], [1, -1, -1], [-1, 1, -1], [-1, -1, 1], [-1, -1, -1]] min_val = 10000000000 min_p = [] offset = [0, 0, 0] d = 50 while d > 0: 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]))