#P12942. [NERC 2019] Intriguing Selection

    ID: 12738 Type: RemoteJudge 3000ms 512MiB Tried: 0 Accepted: 0 Difficulty: 6 Uploaded By: Tags>2019交互题Special JudgeICPCNERC/NEERC

[NERC 2019] Intriguing Selection

题目描述

This is an interactive problem.\emph{This is an interactive problem.}

You are the head coach of a chess club. The club has 2n2n players, each player has some strength\emph{strength} which can be represented by a number, and all those numbers are distinct. The strengths of the players are not known to you.

You need to select nn players who would represent your club in the upcoming championship. Naturally, you want to select nn players with the highest strengths.

You can organize matches between the players to do that. In every match, you pick two players, they play some games, and you learn which one of the two has higher strength. You can wait for the outcome of a match before deciding who will participate in the next one.

However, you do not want to know exactly\emph{exactly} how those nn players compare between themselves, as that would make the championship itself less intriguing\emph{intriguing}. More formally, you must reach a state where there is exactly one way to choose nn players with the highest strengths that is consistent with the outcomes of the matches you organized, but there must be at least two possible orderings of those nn players by strength that are consistent with the outcomes of the matches you organized.

Interaction Protocol

Your program has to process multiple test cases in one run. First, it should read the integer tt (t1t \ge 1) --- the number of test cases. Then, it should process the test cases one by one.

In each test case, your program should start by reading the integer nn (3n1003 \le n \le 100) --- the number of players to select out of 2n2n players. The sum of squares of the values of nn over all test cases does not exceed 1000010\,000.

Then your program can organize matches zero or more times. To organize a match, your program should print a match description formatted as ? i j\tt{?\ i\ j} --- a question mark followed by two distinct numbers of players participating in the match. The players are numbered from 1 to 2n2n, inclusive. Remember to flush the output after printing the match description. Then your program should read the match outcome --- it will be either the greater-than character (>\tt{>}), if the first player in the match description has higher strength, or the less-than character (<\tt{<}), if the second player in the match description has higher strength.

Your program can organize at most 4n24n^2 matches. After it is done organizing matches, it should print the exclamation mark (!\tt{!}) and continue to the next test case, or exit gracefully if this was the last test case. Remember to flush the output after printing the exclamation mark.

There must be exactly one way to choose nn players with the highest strength that is consistent with the outcomes of the matches you organized, but there must be at least two possible orderings of those nn players by their strength that are consistent with the outcomes of the matches you organized.

The judging program picks some distinct numbers as the strengths of all players before your program starts organizing matches and uses them to answer the requests.

输入格式

See Interaction Protocol

输出格式

See Interaction Protocol

2
3

>

<

>

<

>

>

3

<

<

<

>

>



? 1 3

? 4 2

? 4 5

? 6 5

? 3 4

? 5 6

!

? 3 4

? 4 2

? 5 3

? 6 4

? 3 1

!

提示

In the example, the players in the first test case are sorted by strength in decreasing order. From the matches in the example output, we can deduce that players 1, 2, and 3 have the highest strength, but we do not know how the player 1 compares to the player 2.