This is an interactive problem.
There is a hidden undirected tree consisting of $$$n$$$ vertices. To find this tree, you may ask queries of the following form:
The interactor will process your sequence and return a subset of these vertices, denoted by $$$S$$$. The set $$$S$$$ is generated by the following process:
Your task is to find all $$$n-1$$$ edges of the hidden tree. To make the problem harder, the sum of $$$k$$$ over all queries must not exceed $$$30 \cdot n$$$.
Each test contains multiple test cases. The first line contains the number of test cases $$$t$$$ ($$$1 \le t \le 100$$$). The description of the test cases follows.
The first line of each test case contains an integer $$$n$$$ ($$$2 \le n \le 10^3$$$), representing the number of vertices in the hidden tree.
It is guaranteed that the sum of $$$n$$$ over all test cases does not exceed $$$10^3$$$.
To make a query, output a line in the following format:
As a response to the query, you will receive a binary string of length $$$k$$$, representing $$$S$$$.
To report the answer, first output $$$\mathtt{!}$$$ on a single line. Then, output $$$n-1$$$ lines, where the $$$i$$$-th line contains two integers $$$u_i$$$ and $$$v_i$$$, representing an undirected edge between vertices $$$u_i$$$ and $$$v_i$$$. You may output the edges in any order.
After this, proceed to the next test case or terminate if this is the last test case.
The interactor is not adaptive. This means that the hidden tree is fixed before any queries are made and will not change throughout the interaction.
After printing each query do not forget to output the end of line and flush$$$^{\text{∗}}$$$ the output. Otherwise, you will get Idleness limit exceeded verdict. If, at any interaction step, you read $$$-1$$$ instead of valid data, your solution must exit immediately. This means that your solution will receive Wrong answer because of an invalid query or any other mistake. Failing to exit can result in an arbitrary verdict because your solution will continue to read from a closed stream.
Hacks
To hack, use the following format.
The first line shoud contain a single integer $$$t$$$ ($$$1 \le t \le 100$$$), representing the number of test cases.
The first line of each test case should contain an integer $$$n$$$ ($$$2 \le n \le 10^3$$$), representing the number of vertices in the tree.
Each of the next $$$n-1$$$ lines should contain two integers $$$u$$$ and $$$v$$$ ($$$1 \le u,v \le n$$$, $$$u \ne v$$$), representing an edge in the tree. You need to guarantee that the edges form a valid tree.
The sum of $$$n$$$ over all test cases should not exceed $$$10^3$$$.
$$$^{\text{∗}}$$$To flush, use:
2 2 10 5 101 10101
? 2 1 2 ! 2 1 ? 3 1 2 5 ? 5 5 3 4 2 1 ! 3 5 1 2 3 2 2 4
In the first test case, the hidden tree consists of $$$n=2$$$ vertices, and the only edge is $$$(1,2)$$$.
In the second test case, the hidden tree consists of $$$n=5$$$ vertices. The edges are $$$(1, 2)$$$, $$$(2, 3)$$$, $$$(2, 4)$$$, and $$$(3, 5)$$$.
| Name |
|---|


