← Home
write a go solution for Description:
This is an interactive problem.

You're given a tree consisting of n nodes, rooted at node 1. A tree is a connected graph with no cycles.

We chose a hidden node x. In order to find this node, you can ask queries of two types:

- d u (1<=u<=n). We will answer with the distance between nodes u and x. The distance between two nodes is the number of edges in the shortest path between them.
- s u (1<=u<=n). We will answer with the second node on the path from u to x. However, there's a plot twist. If u is not an ancestor of x, you'll receive "Wrong answer" verdict!

Node a is called an ancestor of node b if aneb and the shortest path from node 1 to node b passes through node a. Note that in this problem a node is not an ancestor of itself.

Can you find x in no more than 36 queries? The hidden node is fixed in each test beforehand and does not depend on your queries.

Input Format:
The first line contains the integer n (2<=n<=2*10^5) — the number of nodes in the tree.

Each of the next n-1 lines contains two space-separated integers u and v (1<=u,v<=n) that mean there's an edge between nodes u and v. It's guaranteed that the given graph is a tree.

Output Format:
To print the answer, print "! x" (without quotes).

Note:
In the first example, the hidden node is node 5.

We first ask about the distance between node x and node 2. The answer is 3, so node x is either 4 or 5. We then ask about the second node in the path from node 3 to node x. Note here that node 3 is an ancestor of node 5. We receive node 5 as the answer. Finally, we report that the hidden node is node 5.. Output only the code with no comments, explanation, or additional text.