Guess the Number#11355

Guess the Number

1 second
256 megabytes
Easy

This is an interactive problem. This means that during testing, a jury program (hereinafter referred to as the interactor) will run alongside your solution. Your program needs to "communicate" with it. For C++ and Python, a template is provided on how to communicate correctly.

The interactor has chosen a certain number from to . You need to guess this number. You can give numbers to the interactor, and it will respond whether the number it has chosen is greater or less than the one you provided.

For example, suppose the interactor has chosen the number . If you give it the number , it will say «greater». If the number , it will say «less». If , then «equal».

You need to figure out what this number is within questions.

You may find it useful to read about binary search.

Below you can find code in different languages that receives 6 points.

Interaction

You need to make queries in the following format:

«? x». Where (1 \leq x \leq 100) — the number you want to pass to the interactor. You can do this no more than times. You need to output this, and then output a newline character. After that, you must perform the flush operation. You need to read the response. If the number that the interactor has chosen is greater than yours, you will read the number . If less, then . If your number is the number that the interactor has chosen, you will read .

The flush operation in different languages should be performed as follows:

  • fflush(stdout) or cout.flush() in C++;

  • System.out.flush() in Java;

  • flush(output) in Pascal;

  • stdout.flush() in Python;

  • for all other languages, you need to check the documentation yourself.

After you are confident about what number the interactor has chosen, you need to output «! x», a newline character, and perform the flush operation.

Examples

Example

Input
1
-1
0
Output
? 30
? 90
? 83
! 83

Example 1

Loading
Loading

Scoring

Let — the maximum number of questions among all tests.

If q > 100, you will receive points.

Otherwise, you will receive \min(106 - q, 100) points.