#P1665D. GCD Guess

    ID: 1236 Type: RemoteJudge 3000ms 256MiB Tried: 0 Accepted: 0 Difficulty: 7 Uploaded By: Tags>bitmaskschinese remainder theoremconstructive algorithmsgamesinteractivemathnumber theory*2000

GCD Guess

Description

This is an interactive problem.

There is a positive integer 1x1091 \le x \le 10^9 that you have to guess.

In one query you can choose two positive integers aba \neq b. As an answer to this query you will get gcd(x+a,x+b)\gcd(x + a, x + b), where gcd(n,m)\gcd(n, m) is the greatest common divisor of the numbers nn and mm.

To guess one hidden number xx you are allowed to make no more than 3030 queries.

The first line of input contains a single integer tt (1t10001 \le t \le 1000) denoting the number of test cases.

The integer xx that you have to guess satisfies the constraints: (1x1091 \le x \le 10^9).

Interaction

The hidden number xx is fixed before the start of the interaction and does not depend on your queries.

To guess each xx you can make no more than 3030 queries in the following way:

  • "? a b" (1a,b21091 \le a, b \le 2 \cdot 10^9, aba \neq b).

For this query you will get gcd(x+a,x+b)\gcd(x + a, x + b).

When you know xx, print a single line in the following format.

  • "! x" (1x1091 \le x \le 10^9).

After that continue to solve the next test case.

If you ask more than 3030 queries for one xx or make an invalid query, the interactor will terminate immediately and your program will receive verdict Wrong Answer.

After printing each query do not forget to output end of line and flush the output buffer. Otherwise, you will get the Idleness limit exceeded verdict. To do flush use:

  • fflush(stdout) or cout.flush() in C++;
  • System.out.flush() in Java;
  • flush(output) in Pascal;
  • stdout.flush() in Python;
  • Read documentation for other languages.

Hacks

To use hacks, use the following format of tests:

The first line should contain a single integer tt (1t10001 \le t \le 1000) — the number of test cases.

The first and only line of each test case should contain a single integer xx (1x1091 \le x \le 10^9) denoting the integer xx that should be guessed.

Input

The first line of input contains a single integer tt (1t10001 \le t \le 1000) denoting the number of test cases.

The integer xx that you have to guess satisfies the constraints: (1x1091 \le x \le 10^9).

Sample Input 1

2

1

8


1

Sample Output 1

? 1 2

? 12 4

! 4
? 2000000000 1999999999

! 1000000000

Note

The first hidden number is 44, that's why the answers for the queries are:

"? 1 2" — gcd(4+1,4+2)=gcd(5,6)=1\gcd(4 + 1, 4 + 2) = \gcd(5, 6) = 1.

"? 12 4" — gcd(4+12,4+4)=gcd(16,8)=8\gcd(4 + 12, 4 + 4) = \gcd(16, 8) = 8.

The second hidden number is 10910^9, that's why the answer for the query is:

"? 2000000000 1999999999" — gcd(3109,31091)=1\gcd(3 \cdot 10^9, 3 \cdot 10^9 - 1) = 1.

These queries are made only for understanding the interaction and are not enough for finding the true xx.