import sys lx, rx = -150, 150 ly, ry = -150, 150 lz, rz = -150, 150 for _ in range(30): c1, c2 = (lx * 2 + rx)//3, (lx + rx * 2)//3 print("? {} {} {}".format(c1, ly, lz)) sys.stdout.flush() f1 = int(input()) print("? {} {} {}".format(c2, ly, lz)) sys.stdout.flush() f2 = int(input()) if f1 <= f2: lx = c1 else: rx = c2 for _ in range(30): c1, c2 = (ly * 2 + ry)//3, (ly + ry * 2)//3 print("? {} {} {}".format(lx, c1, lz)) sys.stdout.flush() f1 = int(input()) print("? {} {} {}".format(lx, c2, lz)) sys.stdout.flush() f2 = int(input()) if f1 <= f2: ly = c1 else: ry = c2 for _ in range(30): c1, c2 = (lz * 2 + rz)//3, (lz + rz * 2)//3 print("? {} {} {}".format(lx, ly, c1)) sys.stdout.flush() f1 = int(input()) print("? {} {} {}".format(lx, ly, c2)) sys.stdout.flush() f2 = int(input()) if f1 <= f2: lz = c1 else: rz = c2 ans = [] minv = 10 ** 18 print(lx, rx, ly, ry, lz, rz) for x in range(lx, rx + 1): for y in range(ly, ry + 1): for z in range(lz, rz + 1): print("? {} {} {}".format(x, y, z)) d = int(input()) if d <= minv: minv = d ans = ["!", x, y, z] print(*ans)