P = [[1, 1, 1], [1, 1, 0], [1, 0, 1], [0, 1, 1], [1, 0, 0], [0, 1, 0], [0, 0, 1], [0, 0, 0]] min_val = 10000000000 offset = [0, 0, 0] d = 50 while d > 0: for p in P: print('? {x} {y} {z}'.format(offset[0] + p[0] * d, offset[1] + p[1] * d, offset[2] + p[2] * d)) min_val = min(min_val, int(input())) offset = [offset[0] + p[0] * d, offset[1] + p[1] * d, offset[2] + p[2] * d] d //= 2 print('! {x} {y} {z}'.format(offset[0], offset[1], offset[2]))