C. Canyon
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

You and your friend are visiting Grand Canyon but you've split several minutes ago and now can't find each other.

Thankfully, you still have your cell phones but the mobile service connection is awful. So the only thing you can do is to check whether your friend is within a distance of no more than $$$2d$$$ from you. Problem is: the value of $$$d$$$ is unknown since there is no app on the phone to calculate it. You only know that $$$d$$$ is an integer in the range from $$$1$$$ to $$$10^5$$$.

Currently, you are at point with coordinates $$$(0, 0)$$$ and it's known that

  1. your friend is too scared to be alone so he doesn't move and stays at currently unknown point $$$(x_0, y_0)$$$ with possibly non-integer coordinates, where $$$-10^5 \le x_0, y_0 \le 10^5$$$;
  2. your friend couldn't have been left behind too far: he's currently on a distance no more than $$$d$$$ from you.

To find your friend, you can perform the following action no more than $$$400$$$ times: move to any point $$$(x, y)$$$ ($$$-10^6 \le x, y \le 10^6$$$) on the coordinate plane and activate call your friend to check whether he is within a distance of no more than $$$2d$$$ from you.

Find your friend's coordinates with an absolute error of no more than $$$10^{-3}$$$ for each coordinate.

Interaction

This is an interactive problem.

Interaction with the interactor occurs through queries from your program and responses from the interactor. Each query should be formatted as "? $$$x$$$ $$$y$$$", which means moving to the point with real coordinates $$$x$$$ and $$$y$$$ ($$$-10^6 \le x, y \le 10^6$$$) and calling your friend. In response to the query, you will receive one of two strings:

  • "YES", if your friend is within a distance of no more than $$$2d$$$ from the point with coordinates $$$(x, y)$$$;
  • "NO" otherwise.

To output the answer to the problem, print "! $$$x_0$$$ $$$y_0$$$", where $$$x_0$$$ and $$$y_0$$$ are the presumed coordinates of your friend's location. This output does not count towards the number of queries.

If at any point your program exceeds the limit of $$$400$$$ queries or you output a query at a point outside the allowed area, the interactor will terminate with a verdict of WA (Wrong Answer).

Remember to output a newline character ('{\}n') after each query and flush the output buffer so that the interactor receives your query. This can be done using std::cout.flush() in C++, System.out.flush() in Java, and sys.stdout.flush() in Python, as well as similar commands in other languages. If your program does not flush the output buffer, it will receive a verdict of TL (Time Limit Exceeded) or IL (Idleness Limit Exceeded).

Example
Input
? 1 0

? 3 0

? -1 1

? 1 1

? 0 2

? 2 1

? 2 1.000001

? 0 -1.000001

! 1 0
Output

YES

YES

NO

YES

NO

YES

NO

NO
Note

In the first example from the statement, one possible value of $$$d$$$ is $$$1$$$. Then, if we are within a distance of no more than $$$2$$$ from $$$(1, 0)$$$, we get the response YES, otherwise NO.