L. Line without beginning, line without end
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

This is an interactive problem.

We have conceived a line in the form of $$$y = kx + b$$$. Your task is to deduce this line.

You can make queries, in one question you specify a point ($$$x, y$$$) and receive in return the shortest distance from the point to the line.

Can you manage in no more than $$$5$$$ queries?

Input

It is guaranteed that ($$$-100 \le k, b \le 100$$$).

Interaction

You can start making queries right away. To do this, output:

  • "? x y" ($$$-100 \le x, y \le 100$$$)

on a separate line. After making a query, read a non-negative real number $$$d$$$ with precision up to $$$20$$$ digits – the shortest distance from the point you provided to the line. If you make an incorrect query or exceed the set limit of $$$5$$$ queries, you will receive the number $$$-1$$$ in response, in which case your program should immediately terminate.

To output the answer, output

  • "! k b"

on a separate line. Your answer will be considered correct if the relative or absolute error of the coefficients $$$k$$$ and $$$b$$$ is no more than $$$10^{-3}$$$.

After any output, do not forget to output a newline and flush the output buffer. Otherwise, you will receive the verdict Idleness limit exceeded. To flush the buffer, use:

  • fflush(stdout) or cout.flush() or std::endl in C++;
  • System.out.flush() in Java;
  • flush(output) in Pascal;
  • stdout.flush() in Python;
  • refer to the documentation for other languages.
Examples
Input

1.41421356237309504876

0.70710678118654752438

Output
? 0.000 0.000

? 0.000 1.000

! 1.0000 2.0001
Input

0.00000000000000000000

0.00000000000000000000

5.00000000000000000000

5.00000000000000000000

2.50000000000000000000
Output
? 0 5

? 5 5

? 5 0

? 0 0

? 2.5 2.5

! 0.000000011 5.00000003