open System printfn "? 0 0" stdout.Flush() let res1 = Console.ReadLine() |> int printfn "? 1 0" stdout.Flush() let res2 = Console.ReadLine() |> int let f l r = let arr: array> = Array.create 20005 [] for x = l to r do for y = 0 to 100 do let idx = x * x + y * y arr.[idx] <- (x, y) :: arr.[idx] arr let dist1 = f 0 100 let dist2 = f (-1) 99 let intersect xs ys = let mutable result = [] for x in xs do for y in ys do if x = y then result <- x :: result result dist2.[res2] |> List.map (fun (a, b) -> (a + 1, b)) |> intersect dist1.[res1] |> List.head |> fun (a, b) -> printfn "! %d %d" a b stdout.Flush()