Problem: This is an interactive problem. In the interaction section below you will find the information about flushing the output.

The New Year tree of height h is a perfect binary tree with vertices numbered 1 through 2h - 1 in some order. In this problem we assume that h is at least 2. The drawing below shows one example New Year tree of height 3:

<image>

Polar bears love decorating the New Year tree and Limak is no exception. To decorate the tree, he must first find its root, i.e. a vertex with exactly two neighbours (assuming that h ≥ 2). It won't be easy because Limak is a little bear and he doesn't even see the whole tree. Can you help him?

There are t testcases. In each testcase, you should first read h from the input. Then you can ask at most 16 questions of format "? x" (without quotes), where x is an integer between 1 and 2h - 1, inclusive. As a reply you will get the list of neighbours of vertex x (more details in the "Interaction" section below). For example, for a tree on the drawing above after asking "? 1" you would get a response with 3 neighbours: 4, 5 and 7. Your goal is to find the index of the root y and print it in the format "! y". You will be able to read h for a next testcase only after printing the answer in a previous testcase and flushing the output.

Each tree is fixed from the beginning and it doesn't change during your questions.

Input

The first line of the input contains a single integer t (1 ≤ t ≤ 500) — the number of testcases.

At the beginning of each testcase you should read from the input a single integer h (2 ≤ h ≤ 7) — the height of the tree. You can't read the value of h in a next testcase until you answer a previous testcase.

Interaction

To ask a question about neighbours of vertex x, print "? x" (without quotes) on a separate line. Note, you must print an end-of-line character after the last character of the line and flush your output to get a response.

The response will consist of two lines. The first line will contain a single integer k (1 ≤ k ≤ 3) — the number of neighbours of vertex x. The second line will contain k distinct integers t1, ..., tk (1 ≤ t1 < ... < tk ≤ 2h - 1) — indices of neighbours of vertex x, gives in the increasing order.

After asking at most 16 questions you have to say y — the index of the root. Print "! y" (without quotes) and an end-of-line character, and flush the output.

Each tree is fixed from the beginning and it doesn't change during your questions.

You can get Idleness Limit Exceeded if you don't print anything or if you forget to flush the output.

To flush you can use (just printing a query/answer and end-of-line): 

  * fflush(stdout) in C++; 
  * System.out.flush() in Java; 
  * stdout.flush() in Python; 
  * flush(output) in Pascal; 
  * See the documentation for other languages. 



In any moment if the program reads h = 0 or k = 0 it should immediately terminate normally (for example, calling exit(0)). It means that the system detected incorrect request/output from your program and printed 0 because if can't process your requests anymore. In this case you'll receive verdict "Wrong Answer", but if you ignore case h = 0 or k = 0 it could lead to "Runtime Error", "Time/Memory limit exceeded" or any other verdict because your program could read a trash from the closed input stream.

Hacking. To hack someone, use the following format:

The first line should contain a single integer t equal to 1 (only one testcase is allowed in hacks). The second line should contain a single integer h. Each of next 2h - 2 lines should contain two distinct integers ai and bi (1 ≤ ai, bi ≤ 2h - 1), denoting two nodes connected with an edge. The printed edges must form a perfect binary tree of height h.

Of course, contestant programs will not be able to see this input.

Examples

Input

1
3
3
4 5 7
2
1 2
1
2


Output

? 1
? 5
? 6
! 5


Input

2
2
1
3
2
1 2
2
1 2
4
3
3 12 13


Output

? 1
? 3
? 3
! 3
? 6
! 1

Note

In the first sample, a tree corresponds to the drawing from the statement.

In the second sample, there are two two testcases. A tree in the first testcase has height 2 and thus 3 vertices. A tree in the second testcase has height 4 and thus 15 vertices. You can see both trees on the drawing below.

<image>

Solution (in JAVA):

Solution:


import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.lang.*;


public class P750F{
	static long mod=1000000007;
	static InputReader in = new InputReader(System.in);     
	static ArrayList<Integer>ar1=new ArrayList<Integer>();
	static ArrayList<Integer>ar2=new ArrayList<Integer>();
	static ArrayList<Integer>ar[]=new ArrayList[200];
	static HashSet<Integer>hs=new HashSet<Integer>();
	static int ans=-1;
	static int count=0;
	static void swap()
	{
			ArrayList<Integer>t1=new ArrayList<Integer>();
			ArrayList<Integer>t2=new ArrayList<Integer>();
			for(int cc:ar1)
			{
				t1.add(cc);
			}
			for(int cc:ar2)
			{
				t2.add(cc);
			}
			ar1=new ArrayList<Integer>();
			ar2=new ArrayList<Integer>();
			for(int cc:t1)
			{
				ar2.add(cc);
			}
			for(int cc:t2)
			{
				ar1.add(cc);
			}
	}
	static void l1()
	{
		l2();
	}
	static void l2()
	{
	 int y=in.readInt();
   	 System.out.println("? "+y);
   	 hs.add(y);
   	 int z=in.readInt();
   	if(z==2)
   	{
   		int bb1=in.readInt();
   		int bb2=in.readInt();
   		System.out.println("! "+y);
   	}
   	else
   	{
   		
   		int x1=in.readInt();
   		int x2=in.readInt();
   		int x3=in.readInt();
   		ar[y].add(x1);
   		ar[y].add(x2);
   		ar[y].add(x3);
   		int f=0;
   		if(!hs.contains(x1))
   		{
   			f=1;
   			dfs1(x1);
   			
   		}
   		if(!hs.contains(x2)&&ans==-1)
   		{
   			if(f==0)
   				dfs1(x2);
   			else
   				dfs2(x2);
   		}
   		if(!hs.contains(x3)&&ans==-1)
   		{
   			dfs2(x3);
   		}
   		if(ans!=-1)
   		{
   			System.out.println("! "+ans);
   		}
   		else
   		{
   			int s1=ar1.size();
   			int s2=ar2.size();
   			if(s1<s2)
   			{
   				swap();
   			}
   			s1=ar1.size();
   			s2=ar2.size();
   				int d=s1-s2;
   				d/=2;
   				int l=s2+d;
   				l++;
   				if(l>=4)
   				{
   					if(l==4)
   					{
   						l4(0);
   					}
   					else if(l==5)
   					{
   						
   						l5(0);
   					}
   					else
   					{
   						l6(0);
   					}
   				}
   				else
   				{
   					l3(0);
   				}
   			
   		}
   		
   	}
	}
	static void l3(int u)
	{
		int x1,x2,x3,z,f;
		int ele=ar1.get((0+u));
		ar1=new ArrayList<Integer>();
		ar2=new ArrayList<Integer>();
		int cur=-1;
		for(int j1=0;j1<ar[ele].size();j1++)
		{
			int p=ar[ele].get(j1);
			if(!hs.contains(p))
			{
				cur=p;
			}
		}
		hs.add(cur);
		System.out.println("? "+cur);
    	 z=in.readInt();
    	if(z==2)
    	{
    		int bb1=in.readInt();
       		int bb2=in.readInt();
    		System.out.println("! "+cur);
    	}
    	else
    	{
    		x1=in.readInt();
    		x2=in.readInt();
    		x3=in.readInt();
    		ar[cur].add(x1);
    		ar[cur].add(x2);
    		ar[cur].add(x3);
		
		f=0;
		if(!hs.contains(x1))
		{
			f=x1;
			dfs1(x1);
		}
		if(!hs.contains(x2))
		{
			if(f==0)
				{	
					f=x2;
					dfs1(x2);
				}
		}
		if(ans!=-1)
		{
			System.out.println("! "+ans);
		}
		else
		{
		if(ar1.size()==3)
		{
			int curr=-1;
			for(int j1=0;j1<ar[cur].size();j1++)
			{
				int p=ar[cur].get(j1);
				if(!hs.contains(p))
				{
					curr=p;
				}
			}
			hs.add(curr);
			System.out.println("? "+curr);
       	 z=in.readInt();
       	if(z==2)
       	{
       		int bb1=in.readInt();
       		int bb2=in.readInt();
       		System.out.println("! "+curr);
       	}
       	else
       	{
       		x1=in.readInt();
    		x2=in.readInt();
    		x3=in.readInt();
       		ar[curr].add(x1);
    		ar[curr].add(x2);
    		ar[curr].add(x3);
    		f=0;
    		if(!hs.contains(x1))
    		{
    			f=1;
    			System.out.println("? "+x1);
    			hs.add(x1);
    			 z=in.readInt();
   		        	if(z==2)
   		        	{
   		        		int bb1=in.readInt();
   		        		int bb2=in.readInt();
   		        		
   		        		ans=x1;
   		        		System.out.println("! "+x1);
   		        	}
   		        	else
   		        	{
   		        		int xx1=in.readInt();
		        		int xx2=in.readInt();
		        		int xx3=in.readInt();
		        		if(!hs.contains(xx1))
		        		{
		        			System.out.println("? "+xx1);
		        			hs.add(xx1);
		        			 z=in.readInt();
	           		        	if(z==2)
	           		        	{
	           		        		int bb1=in.readInt();
	           		        		int bb2=in.readInt();
	           		        		ans=xx1;
	           		        		System.out.println("! "+xx1);
	           		        	}
	           		        	else if(z==1)
	           		        	{
	           		        		int bb1=in.readInt();
	           		        	}
	           		        	else
	           		        	{
	           		        		int bb1=in.readInt();
	           		        		int bb2=in.readInt();
	           		        		int bb3=in.readInt();
	           		        	}
		        		}
		        		if(!hs.contains(xx2)&&ans==-1)
		        		{

		        			System.out.println("? "+xx2);
		        			hs.add(xx2);
		        			 z=in.readInt();
	           		        	if(z==2)
	           		        	{
	           		        		int bb1=in.readInt();
	           		        		int bb2=in.readInt();
	           		        		ans=xx2;
	           		        		System.out.println("! "+xx2);
	           		        	}
	           		        	else if(z==1)
	           		        	{
	           		        		int bb1=in.readInt();
	           		        	}
	           		        	else
	           		        	{
	           		        		int bb1=in.readInt();
	           		        		int bb2=in.readInt();
	           		        		int bb3=in.readInt();
	           		        	}
		        		}
		        		if(!hs.contains(xx3)&&ans==-1)
		        		{

		        			System.out.println("? "+xx3);
		        			hs.add(xx3);
		        			 z=in.readInt();
	           		        	if(z==2)
	           		        	{
	           		        		int bb1=in.readInt();
	           		        		int bb2=in.readInt();
	           		        		ans=xx3;
	           		        		System.out.println("! "+xx3);
	           		        	}
	           		        	else if(z==1)
	           		        	{
	           		        		int bb1=in.readInt();
	           		        	}
	           		        	else
	           		        	{
	           		        		int bb1=in.readInt();
	           		        		int bb2=in.readInt();
	           		        		int bb3=in.readInt();
	           		        	}
		        		}
   		        	}
    		}
    		if(!hs.contains(x2)&&ans==-1)
    		{
    			if(f==0)
    			{
    				f=1;
        			System.out.println("? "+x2);
        			hs.add(x2);
        			 z=in.readInt();
       		        	if(z==2)
       		        	{
       		        		int bb1=in.readInt();
       		        		int bb2=in.readInt();
       		        		ans=x2;
       		        		System.out.println("! "+x2);
       		        	}
       		        	else
       		        	{
       		        		int xx1=in.readInt();
    		        		int xx2=in.readInt();
    		        		int xx3=in.readInt();
    		        		if(!hs.contains(xx1))
    		        		{
    		        			System.out.println("? "+xx1);
    		        			hs.add(xx1);
    		        			 z=in.readInt();
    	           		        	if(z==2)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		ans=xx1;
    	           		        		System.out.println("! "+xx1);
    	           		        	}
    	           		        	else if(z==1)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        	}
    	           		        	else
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		int bb3=in.readInt();
    	           		        	}
    		        		}
    		        		if(!hs.contains(xx2)&&ans==-1)
    		        		{

    		        			System.out.println("? "+xx2);
    		        			hs.add(xx2);
    		        			 z=in.readInt();
    	           		        	if(z==2)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		ans=xx2;
    	           		        		System.out.println("! "+xx2);
    	           		        	}
    	           		        	else if(z==1)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        	}
    	           		        	else
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		int bb3=in.readInt();
    	           		        	}
    		        		}
    		        		if(!hs.contains(xx3)&&ans==-1)
    		        		{

    		        			System.out.println("? "+xx3);
    		        			hs.add(xx3);
    		        			 z=in.readInt();
    	           		        	if(z==2)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		ans=xx3;
    	           		        		System.out.println("! "+xx3);
    	           		        	}
    	           		        	else if(z==1)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        	}
    	           		        	else
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		int bb3=in.readInt();
    	           		        	}
    		        		}
       		        	}
    			}
    			else
    			{
    				f=1;
        			System.out.println("? "+x2);
        			hs.add(x2);
        			 z=in.readInt();
       		        	if(z==2)
       		        	{
       		        		int bb1=in.readInt();
       		        		int bb2=in.readInt();
       		        		ans=x2;
       		        		System.out.println("! "+x2);
       		        	}
       		        	else
       		        	{
       		        		int xx1=in.readInt();
    		        		int xx2=in.readInt();
    		        		int xx3=in.readInt();
    		        		int g=0;
    		        		if(!hs.contains(xx1))
    		        		{
    		        			g=1;
    		        			System.out.println("? "+xx1);
    		        			hs.add(xx1);
    		        			 z=in.readInt();
    	           		        	if(z==2)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		ans=xx1;
    	           		        		System.out.println("! "+xx1);
    	           		        	}
    	           		        	else if(z==1)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        	}
    	           		        	else
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		int bb3=in.readInt();
    	           		        	}
    		        		}
    		        		if(!hs.contains(xx2)&&ans==-1)
    		        		{
    		        			if(g==0)
    		        			{
    		        				g=1;
    		        			System.out.println("? "+xx2);
    		        			hs.add(xx2);
    		        			 z=in.readInt();
    	           		        	if(z==2)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		ans=xx2;
    	           		        		System.out.println("! "+xx2);
    	           		        	}
    	           		        	else if(z==1)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        	}
    	           		        	else
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		int bb3=in.readInt();
    	           		        	}
    		        			}
    		        			else
    		        			{
    		        				ans=xx2;
    		        				System.out.println("! "+xx2);
    		        			}
    		        		}
    		        		if(!hs.contains(xx3)&&ans==-1)
    		        		{

    	           		        		ans=xx3;
    	           		        		System.out.println("! "+xx3);
    		        		}
       		        	}
    			}
    		}
    		if(!hs.contains(x3)&&ans==-1)
    		{
    			if(f==0)
    			{
    				f=1;
        			System.out.println("? "+x3);
        			hs.add(x3);
        			 z=in.readInt();
       		        	if(z==2)
       		        	{
       		        		int bb1=in.readInt();
       		        		int bb2=in.readInt();
       		        		ans=x3;
       		        		System.out.println("! "+x3);
       		        	}
       		        	else
       		        	{
       		        		int xx1=in.readInt();
    		        		int xx2=in.readInt();
    		        		int xx3=in.readInt();
    		        		if(!hs.contains(xx1))
    		        		{
    		        			System.out.println("? "+xx1);
    		        			hs.add(xx1);
    		        			 z=in.readInt();
    	           		        	if(z==2)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		ans=xx1;
    	           		        		System.out.println("! "+xx1);
    	           		        	}
    	           		        	else if(z==1)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        	}
    	           		        	else
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		int bb3=in.readInt();
    	           		        	}
    		        		}
    		        		if(!hs.contains(xx2)&&ans==-1)
    		        		{

    		        			System.out.println("? "+xx2);
    		        			hs.add(xx2);
    		        			 z=in.readInt();
    	           		        	if(z==2)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		ans=xx2;
    	           		        		System.out.println("! "+xx2);
    	           		        	}
    	           		        	else if(z==1)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        	}
    	           		        	else
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		int bb3=in.readInt();
    	           		        	}
    		        		}
    		        		if(!hs.contains(xx3)&&ans==-1)
    		        		{

    		        			System.out.println("? "+xx3);
    		        			hs.add(xx3);
    		        			 z=in.readInt();
    	           		        	if(z==2)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		ans=xx3;
    	           		        		System.out.println("! "+xx3);
    	           		        	}
    	           		        	else if(z==1)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        	}
    	           		        	else
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		int bb3=in.readInt();
    	           		        	}
    		        		}
       		        	}
    			}
    			else
    			{
    				f=1;
        			System.out.println("? "+x3);
        			hs.add(x3);
        			 z=in.readInt();
       		        	if(z==2)
       		        	{
       		        		int bb1=in.readInt();
       		        		int bb2=in.readInt();
       		        		ans=x3;
       		        		System.out.println("! "+x3);
       		        	}
       		        	else
       		        	{
       		        		int xx1=in.readInt();
    		        		int xx2=in.readInt();
    		        		int xx3=in.readInt();
    		        		int g=0;
    		        		if(!hs.contains(xx1))
    		        		{
    		        			g=1;
    		        			System.out.println("? "+xx1);
    		        			hs.add(xx1);
    		        			 z=in.readInt();
    	           		        	if(z==2)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		ans=xx1;
    	           		        		System.out.println("! "+xx1);
    	           		        	}
    	           		        	else if(z==1)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        	}
    	           		        	else
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		int bb3=in.readInt();
    	           		        	}
    		        		}
    		        		if(!hs.contains(xx2)&&ans==-1)
    		        		{
    		        			if(g==0)
    		        			{
    		        				g=1;
    		        			System.out.println("? "+xx2);
    		        			hs.add(xx2);
    		        			 z=in.readInt();
    	           		        	if(z==2)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		ans=xx2;
    	           		        		System.out.println("! "+xx2);
    	           		        	}
    	           		        	else if(z==1)
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        	}
    	           		        	else
    	           		        	{
    	           		        		int bb1=in.readInt();
    	           		        		int bb2=in.readInt();
    	           		        		int bb3=in.readInt();
    	           		        	}
    		        			}
    		        			else
    		        			{
    		        				ans=xx2;
    		        				System.out.println("! "+xx2);
    		        			}
    		        		}
    		        		if(!hs.contains(xx3)&&ans==-1)
    		        		{

    	           		        		ans=xx3;
    	           		        		System.out.println("! "+xx3);
    		        		}
       		        	}
    			}
    		}
    		f=0;
    		
       	}
		}
		else
		{
			if(ar1.size()==5)
			{
				ele=ar1.get(0);
				hs.add(ele);
				cur=-1;
				for(int zz:ar[ele])
				{
					if(!hs.contains(zz))
					{
						cur=zz;
						break;
					}
				}
				System.out.println("? "+cur);
				hs.add(cur);
				z=in.readInt();
				if(z==2)
				{
					int bb1=in.readInt();
			   		int bb2=in.readInt();
					System.out.println("! "+cur);
				}
				
				else
				{
					x1=in.readInt();
					x2=in.readInt();
					x3=in.readInt();
					if(!hs.contains(x1)&&ans==-1)
					{
						System.out.println("? "+x1);
        				hs.add(x1);
        				z=in.readInt();
        				if(z==2)
        				{
        					int bb1=in.readInt();
        			   		int bb2=in.readInt();
        					ans=x1;
        					System.out.println("! "+x1);
        				}
        				else if(z==1)
       		        	{
       		        		int bb1=in.readInt();
       		        	}
        				else
       		        	{
       		        		int bb1=in.readInt();
       		        		int bb2=in.readInt();
       		        		int bb3=in.readInt();
       		        	}
					}
					if(!hs.contains(x2)&&ans==-1)
					{
						System.out.println("? "+x2);
        				hs.add(x2);
        				z=in.readInt();
        				if(z==2)
        				{
        					int bb1=in.readInt();
        			   		int bb2=in.readInt();
        					ans=x2;
        					System.out.println("! "+x2);
        				}
        				else if(z==1)
       		        	{
       		        		int bb1=in.readInt();
       		        	}
        				else
       		        	{
       		        		int bb1=in.readInt();
       		        		int bb2=in.readInt();
       		        		int bb3=in.readInt();
       		        	}
					}
					if(!hs.contains(x3)&&ans==-1)
					{
						System.out.println("? "+x3);
        				hs.add(x3);
        				z=in.readInt();
        				if(z==2)
        				{
        					int bb1=in.readInt();
        			   		int bb2=in.readInt();
        					ans=x3;
        					System.out.println("! "+x3);
        				}
        				else if(z==1)
       		        	{
       		        		int bb1=in.readInt();
       		        	}
        				else
       		        	{
       		        		int bb1=in.readInt();
       		        		int bb2=in.readInt();
       		        		int bb3=in.readInt();
       		        	}
					}
				}
			}
			else
			{
				ele=ar1.get(1);
				hs.add(ele);
				for(int zz:ar[ele])
				{
					if(!hs.contains(zz))
					{
						ans=zz;
						System.out.println("! "+zz);
						break;
					}
				}
			}
		}
		}
	}
	}
	static void l4(int u)
	{
		int x1,x2,x3,z,f;
		int ele=ar1.get((1+u));
		hs.add(ele);
		int cur=-1;
		for(int j1=0;j1<ar[ele].size();j1++)
		{
			int p=ar[ele].get(j1);
			if(!hs.contains(p))
			{
				cur=p;
			}
		}
		hs.add(cur);
		System.out.println("? "+cur);
    	 z=in.readInt();
    	if(z==2)
    	{
    		int bb1=in.readInt();
       		int bb2=in.readInt();
    		System.out.println("! "+cur);
    	}
    	else
    	{
    		x1=in.readInt();
			x2=in.readInt();
			x3=in.readInt();
			ar[cur].add(x1);
			ar[cur].add(x2);
			ar[cur].add(x3);
			ar1=new ArrayList<Integer>();
			ar2=new ArrayList<Integer>();
			f=0;
			if(ans==-1&&!hs.contains(x1))
			{
				f=1;
				dfs1(x1);
			}
			if(ans==-1&&!hs.contains(x2)&&f==0)
			{
				f=1;
				dfs1(x2);
			}
			if(ans==-1&&!hs.contains(x3)&&f==0)
			{
				f=1;
				dfs1(x3);
			}
			if(ans!=-1)
			{
				System.out.println("! "+ans);
				
			}
			else
			{
				int s=ar1.size();
				int curr=-1;
				if(ar1.size()==4)
				{
					for(int j=0;j<ar[cur].size();j++)
					{
						int zz=ar[cur].get(j);
						if(!hs.contains(zz))
						{
							curr=zz;
						}
					}
				
				hs.add(curr);
				System.out.println("? "+curr);
				z=in.readInt();
				if(z==2)
				{
					int bb1=in.readInt();
			   		int bb2=in.readInt();
					System.out.println("! "+curr);
				}
				else
				{
				x1=in.readInt();
				x2=in.readInt();
				x3=in.readInt();
				ar[curr].add(x1);
				ar[curr].add(x2);
				ar[curr].add(x3);
				if(ans==-1&&!hs.contains(x1))
				{
					System.out.println("? "+x1);
					z=in.readInt();
					if(z==2)
					{
						int bb1=in.readInt();
				   		int bb2=in.readInt();
						ans=x1;
						System.out.println("! "+x1);
					}
					else if(z==1)
   		        	{
   		        		int bb1=in.readInt();
   		        	}
					else
   		        	{
   		        		int bb1=in.readInt();
   		        		int bb2=in.readInt();
   		        		int bb3=in.readInt();
   		        	}
				}
				if(ans==-1&&!hs.contains(x2))
				{
					System.out.println("? "+x2);
					z=in.readInt();
					if(z==2)
					{
						int bb1=in.readInt();
				   		int bb2=in.readInt();
						ans=x2;
						System.out.println("! "+x2);
					}
					else if(z==1)
   		        	{
   		        		int bb1=in.readInt();
   		        	}
					else
   		        	{
   		        		int bb1=in.readInt();
   		        		int bb2=in.readInt();
   		        		int bb3=in.readInt();
   		        	}
				}
				if(ans==-1&&!hs.contains(x3))
				{
					System.out.println("? "+x3);
					z=in.readInt();
					if(z==2)
					{
						int bb1=in.readInt();
				   		int bb2=in.readInt();
						ans=x3;
						System.out.println("! "+x3);
					}
					else if(z==1)
   		        	{
   		        		int bb1=in.readInt();
   		        	}
					else
   		        	{
   		        		int bb1=in.readInt();
   		        		int bb2=in.readInt();
   		        		int bb3=in.readInt();
   		        	}
				}
				}
				}
				else
				{
					ele=ar1.get(0);
					hs.add(ele);
					for(int xx:ar[ele])
					{
						if(!hs.contains(xx))
						{
							ans=xx;
							System.out.println("! "+xx);
							break;
						}
					}
				}
			}
    	}
	}
	static void l5(int u)
	{
		//if(count==7)
		//System.out.println("exit");
		int x1,x2,x3,z,f;
		int ele=ar1.get((2+u));
		hs.add(ele);
		int cur=-1;
		for(int zz:ar[ele])
		{
			if(!hs.contains(zz))
			{
				cur=zz;
				break;
			}
		}
		System.out.println("? "+cur);
		hs.add(cur);
		z=in.readInt();
		if(z==2)
		{
			int bb1=in.readInt();
	   		int bb2=in.readInt();
			System.out.println("! "+cur);
		}
		else
		{
			x1=in.readInt();
			x2=in.readInt();
			x3=in.readInt();
			if(!hs.contains(x1)&&ans==-1)
			{
				System.out.println("? "+x1);
				hs.add(x1);
				z=in.readInt();
				if(z==2)
				{
					int bb1=in.readInt();
			   		int bb2=in.readInt();
					ans=x1;
					System.out.println("! "+x1);
				}
				else if(z==1)
		        	{
		        		int bb1=in.readInt();
		        	}
				else
		        	{
		        		int bb1=in.readInt();
		        		int bb2=in.readInt();
		        		int bb3=in.readInt();
		        	}
			}
			if(!hs.contains(x2)&&ans==-1)
			{
				System.out.println("? "+x2);
				hs.add(x2);
				z=in.readInt();
				if(z==2)
				{
					int bb1=in.readInt();
			   		int bb2=in.readInt();
					ans=x2;
					System.out.println("! "+x2);
				}
				else if(z==1)
		        	{
		        		int bb1=in.readInt();
		        	}
				else
		        	{
		        		int bb1=in.readInt();
		        		int bb2=in.readInt();
		        		int bb3=in.readInt();
		        	}
			}
			if(!hs.contains(x3)&&ans==-1)
			{
				System.out.println("? "+x3);
				hs.add(x3);
				z=in.readInt();
				if(z==2)
				{
					int bb1=in.readInt();
			   		int bb2=in.readInt();
					ans=x3;
					System.out.println("! "+x3);
				}
				else if(z==1)
		        	{
		        		int bb1=in.readInt();
		        	}
				else
		        	{
		        		int bb1=in.readInt();
		        		int bb2=in.readInt();
		        		int bb3=in.readInt();
		        	}
			}
		}
	}
	static void l6(int u)
	{
		int x1,x2,x3,z,f;
		int ele=ar1.get((3+u));
		hs.add(ele);
		for(int zz:ar[ele])
		{
			if(!hs.contains(zz))
			{
				System.out.println("! "+zz);
			}
		}
	}
	static boolean dfs1(int i)
	{
		 hs.add(i);
		 ar1.add(i);
		 System.out.println("? "+i);
		 boolean f=false;
		 int k=in.readInt();
		 if(k==1)
		 {
			 int bb1=in.readInt();
			 return true;
		 }
		 else if(k==2)
		 {
			 ans=i;
			 int bb1=in.readInt();
		   	 int bb2=in.readInt();
			 return true;
		 }
		 else
		 {
			 int x1=in.readInt();
     		 int x2=in.readInt();
     		 int x3=in.readInt();
     		 ar[i].add(x1);
     		 ar[i].add(x2);
     		 ar[i].add(x3);
     		 if(!hs.contains(x1))
     		 {
     			 dfs1(x1);
     		 }
     		 else if(!hs.contains(x2))
     		 {
     			 dfs1(x2);
     		 }
     		 else
     		 {
     			 dfs1(x3);
     		 }
     		
		 }
		 return f;
	}
	static boolean dfs2(int i)
	{
		 hs.add(i);
		 ar2.add(i);
		 System.out.println("? "+i);
		 boolean f=false;
		 int k=in.readInt();
		 if(k==1)
		 {
			 int bb1=in.readInt();
			 return true;
		 }
		 else if(k==2)
		 {
			 int bb1=in.readInt();
		   	 int bb2=in.readInt();
			 ans=i;
			 return true;
		 }
		 else
		 {
			 int x1=in.readInt();
     		 int x2=in.readInt();
     		 int x3=in.readInt();
     		 ar[i].add(x1);
     		 ar[i].add(x2);
     		 ar[i].add(x3);
     		 if(!hs.contains(x1))
     		 {
     			 dfs2(x1);
     		 }
     		 else if(!hs.contains(x2))
     		 {
     			 dfs2(x2);
     		 }
     		 else
     		 {
     			 dfs2(x3);
     		 }
     		
		 }
		 return f;
	}
    public static void main(String[] args) throws Exception{           	
    	
    	PrintWriter pw=new PrintWriter(System.out);   
    	
    	
    	int t=in.readInt();
        while(t-->0)
        {
        count++;
    	ans=-1;
        int h=in.readInt();
        for(int i=0;i<200;i++)
        	ar[i]=new ArrayList<Integer>();
        hs=new HashSet<Integer>();
        ar1=new ArrayList<Integer>();
        ar2=new ArrayList<Integer>();
        System.out.println("? 1");
       // count++;
        int k=in.readInt();
        hs.add(1);
        if(k==2)
        {
        	int bb1=in.readInt();
       		int bb2=in.readInt();
        	System.out.println("! 1");
        }
        else if(k==1)
        {
        	l1();
        }
        else
        {
        	int y=1;
        	int x1=in.readInt();
        	int x2=in.readInt();
        	int x3=in.readInt();
        	ar[1].add(x1);
        	ar[1].add(x2);
        	ar[1].add(x3);
        	hs.add(1);
        	dfs1(x1);
        	dfs2(x2);
        	int s1=ar1.size();
        	int s2=ar2.size();
        	if(ans!=-1)
        	{
        		System.out.println("! "+ans);
        	}
        	else
        	{
        		if(s1==s2)
        		{
        			ar1=new ArrayList<Integer>();
        			ar2=new ArrayList<Integer>();
        			int l=s1+1;
        			if(l==2)
        			{
        				int cur=x3;
        				
        				dfs1(cur);
        				if(ans!=-1)
        				{
        					System.out.println("! "+ans);
        				}
        				else
        				{
        					if(ar1.size()==3)
        					{
        						l3(0);
        					}
        					else if(ar1.size()==5)
        					{
        						l4(0);
        					}
        					else if(ar1.size()==7)
        					{
        						//if(count==7)
        							//System.out.println("Exit");
        						l5(0);
        					}
        					else if(ar1.size()==9)
        					{
        						l6(0);
        					}
        					
        				}
        			}
        			
        			
        			else if(l==3)
        			{
        				int cur=x3;
        				
        				dfs1(cur);
        				if(ans!=-1)
        				{
        					System.out.println("! "+ans);
        				}
        				else
        				{
        					if(ar1.size()==4)
        					{
        						ll4(cur);//new one instead of l4(-1);
        					}
        					else if(ar1.size()==6)
        					{
        						l5(-1);
        					}
        					else if(ar1.size()==8)
        					{
        						l6(-1);
        					}
        				}
        			}
        			else if(l==4)
        			{
        				int cur=x3;
        				
        				dfs1(cur);
        				if(ans!=-1)
        				{
        					System.out.println("! "+ans);
        				}
        				else
        				{
        					if(ar1.size()==5)
        					{
        						l5(-2);
        					}
        					else if(ar1.size()==7)
        					{
        						l6(-2);
        					}
        					
        					
        				}
        			}
        			else if(l==5)
        			{
        				int cur=x3;
        				
        				hs.add(cur);
        				System.out.println("? "+cur);
        				int z=in.readInt();
        				if(z==2)
        				{
        					int bb1=in.readInt();
        				   	 int bb2=in.readInt();
        					System.out.println("! "+cur);
        				}
        				else
        				{
        				x1=in.readInt();
        				x2=in.readInt();
        				x3=in.readInt();
        				if(!hs.contains(x1)&&ans==-1)
        				{
        					hs.add(x1);
        					System.out.println("? "+x1);
        					z=in.readInt();
            				if(z==2)
            				{
            					int bb1=in.readInt();
            				   	 int bb2=in.readInt();
            					ans=x1;
            					System.out.println("! "+x1);
            				}
            				else if(z==1)
           		        	{
           		        		int bb1=in.readInt();
           		        	}
           		        	else
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		int bb3=in.readInt();
           		        	}
        				}
        				if(!hs.contains(x2)&&ans==-1)
        				{
        					hs.add(x2);
        					System.out.println("? "+x2);
        					z=in.readInt();
            				if(z==2)
            				{
            					int bb1=in.readInt();
            				   	 int bb2=in.readInt();
            					ans=x2;
            					System.out.println("! "+x2);
            				}
            				else if(z==1)
           		        	{
           		        		int bb1=in.readInt();
           		        	}
           		        	else
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		int bb3=in.readInt();
           		        	}
        				}
        				if(!hs.contains(x3)&&ans==-1)
        				{
        					hs.add(x3);
        					System.out.println("? "+x3);
        					z=in.readInt();
            				if(z==2)
            				{
            					int bb1=in.readInt();
            				   	 int bb2=in.readInt();
            					ans=x3;
            					System.out.println("! "+x3);
            				}
            				else if(z==1)
           		        	{
           		        		int bb1=in.readInt();
           		        	}
           		        	else
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		int bb3=in.readInt();
           		        	}
        				}
        				}
        			}
        			else if(l==6)
        			{
        				System.out.println("! "+x3);
        			}
        		}
        		else 
        		{
        			if(s1<s2)
        			{
        				swap();
        			}
        			s1=ar1.size();
        			s2=ar2.size();
        			int l=s2+1;
        			if(l==2)
        			{
        				if(ar1.size()==3)
    					{
    						l3(0);
    					}
    					else if(ar1.size()==5)
    					{
    						l4(0);
    					}
    					else if(ar1.size()==7)
    					{
    						l5(0);
    					}
    					else if(ar1.size()==9)
    					{
    						l6(0);
    					}
        			}
        			else if(l==3)
        			{
        				if(ar1.size()==4)
					{
						l4(-1);
					}
					else if(ar1.size()==6)
					{
						l5(-1);
					}
					else if(ar1.size()==8)
					{
						l6(-1);
					}
        			}
        			else if(l==4)
        			{
        				if(ar1.size()==5)
    					{
    						l5(-2);
    					}
    					else if(ar1.size()==7)
    					{
    						l6(-2);
    					}
        			}
        			else if(l==5)
        			{
        				l6(-3);
        			}
        		}
        		
        	}
        }
    	    	
    	
    	}
    	
    	pw.close();
    }
static void ll4(int cur)
{
	int x1,x2,x3,y,z,f;
	int curr=-1;
	for(int j1=0;j1<ar[cur].size();j1++)
	{
		int p=ar[cur].get(j1);
		if(!hs.contains(p))
		{
			curr=p;
		}
	}
	hs.add(curr);
	System.out.println("? "+curr);
	 z=in.readInt();
	if(z==2)
	{
		int bb1=in.readInt();
		int bb2=in.readInt();
		System.out.println("! "+curr);
	}
	else
	{
		x1=in.readInt();
	x2=in.readInt();
	x3=in.readInt();
		ar[curr].add(x1);
	ar[curr].add(x2);
	ar[curr].add(x3);
	f=0;
	if(!hs.contains(x1))
	{
		f=1;
		System.out.println("? "+x1);
		hs.add(x1);
		 z=in.readInt();
	        	if(z==2)
	        	{
	        		int bb1=in.readInt();
	        		int bb2=in.readInt();
	        		
	        		ans=x1;
	        		System.out.println("! "+x1);
	        	}
	        	else
	        	{
	        		int xx1=in.readInt();
        		int xx2=in.readInt();
        		int xx3=in.readInt();
        		if(!hs.contains(xx1))
        		{
        			System.out.println("? "+xx1);
        			hs.add(xx1);
        			 z=in.readInt();
       		        	if(z==2)
       		        	{
       		        		int bb1=in.readInt();
       		        		int bb2=in.readInt();
       		        		ans=xx1;
       		        		System.out.println("! "+xx1);
       		        	}
       		        	else if(z==1)
       		        	{
       		        		int bb1=in.readInt();
       		        	}
       		        	else
       		        	{
       		        		int bb1=in.readInt();
       		        		int bb2=in.readInt();
       		        		int bb3=in.readInt();
       		        	}
        		}
        		if(!hs.contains(xx2)&&ans==-1)
        		{

        			System.out.println("? "+xx2);
        			hs.add(xx2);
        			 z=in.readInt();
       		        	if(z==2)
       		        	{
       		        		int bb1=in.readInt();
       		        		int bb2=in.readInt();
       		        		ans=xx2;
       		        		System.out.println("! "+xx2);
       		        	}
       		        	else if(z==1)
       		        	{
       		        		int bb1=in.readInt();
       		        	}
       		        	else
       		        	{
       		        		int bb1=in.readInt();
       		        		int bb2=in.readInt();
       		        		int bb3=in.readInt();
       		        	}
        		}
        		if(!hs.contains(xx3)&&ans==-1)
        		{

        			System.out.println("? "+xx3);
        			hs.add(xx3);
        			 z=in.readInt();
       		        	if(z==2)
       		        	{
       		        		int bb1=in.readInt();
       		        		int bb2=in.readInt();
       		        		ans=xx3;
       		        		System.out.println("! "+xx3);
       		        	}
       		        	else if(z==1)
       		        	{
       		        		int bb1=in.readInt();
       		        	}
       		        	else
       		        	{
       		        		int bb1=in.readInt();
       		        		int bb2=in.readInt();
       		        		int bb3=in.readInt();
       		        	}
        		}
	        	}
	}
	if(!hs.contains(x2)&&ans==-1)
	{
		if(f==0)
		{
			f=1;
			System.out.println("? "+x2);
			hs.add(x2);
			 z=in.readInt();
		        	if(z==2)
		        	{
		        		int bb1=in.readInt();
		        		int bb2=in.readInt();
		        		ans=x2;
		        		System.out.println("! "+x2);
		        	}
		        	else
		        	{
		        		int xx1=in.readInt();
	        		int xx2=in.readInt();
	        		int xx3=in.readInt();
	        		if(!hs.contains(xx1))
	        		{
	        			System.out.println("? "+xx1);
	        			hs.add(xx1);
	        			 z=in.readInt();
           		        	if(z==2)
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		ans=xx1;
           		        		System.out.println("! "+xx1);
           		        	}
           		        	else if(z==1)
           		        	{
           		        		int bb1=in.readInt();
           		        	}
           		        	else
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		int bb3=in.readInt();
           		        	}
	        		}
	        		if(!hs.contains(xx2)&&ans==-1)
	        		{

	        			System.out.println("? "+xx2);
	        			hs.add(xx2);
	        			 z=in.readInt();
           		        	if(z==2)
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		ans=xx2;
           		        		System.out.println("! "+xx2);
           		        	}
           		        	else if(z==1)
           		        	{
           		        		int bb1=in.readInt();
           		        	}
           		        	else
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		int bb3=in.readInt();
           		        	}
	        		}
	        		if(!hs.contains(xx3)&&ans==-1)
	        		{

	        			System.out.println("? "+xx3);
	        			hs.add(xx3);
	        			 z=in.readInt();
           		        	if(z==2)
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		ans=xx3;
           		        		System.out.println("! "+xx3);
           		        	}
           		        	else if(z==1)
           		        	{
           		        		int bb1=in.readInt();
           		        	}
           		        	else
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		int bb3=in.readInt();
           		        	}
	        		}
		        	}
		}
		else
		{
			f=1;
			System.out.println("? "+x2);
			hs.add(x2);
			 z=in.readInt();
		        	if(z==2)
		        	{
		        		int bb1=in.readInt();
		        		int bb2=in.readInt();
		        		ans=x2;
		        		System.out.println("! "+x2);
		        	}
		        	else
		        	{
		        		int xx1=in.readInt();
	        		int xx2=in.readInt();
	        		int xx3=in.readInt();
	        		int g=0;
	        		if(!hs.contains(xx1))
	        		{
	        			g=1;
	        			System.out.println("? "+xx1);
	        			hs.add(xx1);
	        			 z=in.readInt();
           		        	if(z==2)
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		ans=xx1;
           		        		System.out.println("! "+xx1);
           		        	}
           		        	else if(z==1)
           		        	{
           		        		int bb1=in.readInt();
           		        	}
           		        	else
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		int bb3=in.readInt();
           		        	}
	        		}
	        		if(!hs.contains(xx2)&&ans==-1)
	        		{
	        			if(g==0)
	        			{
	        				g=1;
	        			System.out.println("? "+xx2);
	        			hs.add(xx2);
	        			 z=in.readInt();
           		        	if(z==2)
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		ans=xx2;
           		        		System.out.println("! "+xx2);
           		        	}
           		        	else if(z==1)
           		        	{
           		        		int bb1=in.readInt();
           		        	}
           		        	else
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		int bb3=in.readInt();
           		        	}
	        			}
	        			else
	        			{
	        				ans=xx2;
	        				System.out.println("! "+xx2);
	        			}
	        		}
	        		if(!hs.contains(xx3)&&ans==-1)
	        		{

           		        		ans=xx3;
           		        		System.out.println("! "+xx3);
	        		}
		        	}
		}
	}
	if(!hs.contains(x3)&&ans==-1)
	{
		if(f==0)
		{
			f=1;
			System.out.println("? "+x3);
			hs.add(x3);
			 z=in.readInt();
		        	if(z==2)
		        	{
		        		int bb1=in.readInt();
		        		int bb2=in.readInt();
		        		ans=x3;
		        		System.out.println("! "+x3);
		        	}
		        	else
		        	{
		        		int xx1=in.readInt();
	        		int xx2=in.readInt();
	        		int xx3=in.readInt();
	        		if(!hs.contains(xx1))
	        		{
	        			System.out.println("? "+xx1);
	        			hs.add(xx1);
	        			 z=in.readInt();
           		        	if(z==2)
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		ans=xx1;
           		        		System.out.println("! "+xx1);
           		        	}
           		        	else if(z==1)
           		        	{
           		        		int bb1=in.readInt();
           		        	}
           		        	else
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		int bb3=in.readInt();
           		        	}
	        		}
	        		if(!hs.contains(xx2)&&ans==-1)
	        		{

	        			System.out.println("? "+xx2);
	        			hs.add(xx2);
	        			 z=in.readInt();
           		        	if(z==2)
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		ans=xx2;
           		        		System.out.println("! "+xx2);
           		        	}
           		        	else if(z==1)
           		        	{
           		        		int bb1=in.readInt();
           		        	}
           		        	else
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		int bb3=in.readInt();
           		        	}
	        		}
	        		if(!hs.contains(xx3)&&ans==-1)
	        		{

	        			System.out.println("? "+xx3);
	        			hs.add(xx3);
	        			 z=in.readInt();
           		        	if(z==2)
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		ans=xx3;
           		        		System.out.println("! "+xx3);
           		        	}
           		        	else if(z==1)
           		        	{
           		        		int bb1=in.readInt();
           		        	}
           		        	else
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		int bb3=in.readInt();
           		        	}
	        		}
		        	}
		}
		else
		{
			f=1;
			System.out.println("? "+x3);
			hs.add(x3);
			 z=in.readInt();
		        	if(z==2)
		        	{
		        		int bb1=in.readInt();
		        		int bb2=in.readInt();
		        		ans=x3;
		        		System.out.println("! "+x3);
		        	}
		        	else
		        	{
		        		int xx1=in.readInt();
	        		int xx2=in.readInt();
	        		int xx3=in.readInt();
	        		int g=0;
	        		if(!hs.contains(xx1))
	        		{
	        			g=1;
	        			System.out.println("? "+xx1);
	        			hs.add(xx1);
	        			 z=in.readInt();
           		        	if(z==2)
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		ans=xx1;
           		        		System.out.println("! "+xx1);
           		        	}
           		        	else if(z==1)
           		        	{
           		        		int bb1=in.readInt();
           		        	}
           		        	else
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		int bb3=in.readInt();
           		        	}
	        		}
	        		if(!hs.contains(xx2)&&ans==-1)
	        		{
	        			if(g==0)
	        			{
	        				g=1;
	        			System.out.println("? "+xx2);
	        			hs.add(xx2);
	        			 z=in.readInt();
           		        	if(z==2)
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		ans=xx2;
           		        		System.out.println("! "+xx2);
           		        	}
           		        	else if(z==1)
           		        	{
           		        		int bb1=in.readInt();
           		        	}
           		        	else
           		        	{
           		        		int bb1=in.readInt();
           		        		int bb2=in.readInt();
           		        		int bb3=in.readInt();
           		        	}
	        			}
	        			else
	        			{
	        				ans=xx2;
	        				System.out.println("! "+xx2);
	        			}
	        		}
	        		if(!hs.contains(xx3)&&ans==-1)
	        		{

           		        		ans=xx3;
           		        		System.out.println("! "+xx3);
	        		}
		        	}
		}
	}
	f=0;
	
	}
}
static  class InputReader
{
    private InputStream stream;
    private byte[] buf = new byte[1024];
    private int curChar;
    private int numChars;
    private SpaceCharFilter filter;

    public InputReader(InputStream stream)
    {
        this.stream = stream;
    }

    public int read()
    {
        if (numChars == -1)
            throw new InputMismatchException();
        if (curChar >= numChars)
        {
            curChar = 0;
            try
            {
                numChars = stream.read(buf);
            } catch (IOException e)
            {
                throw new InputMismatchException();
            }
            if (numChars <= 0)
                return -1;
        }
        return buf[curChar++];
    }

    public int readInt()
    {
        int c = read();
        while (isSpaceChar(c))
            c = read();
        int sgn = 1;
        if (c == '-')
        {
            sgn = -1;
            c = read();
        }
        int res = 0;
        do
        {
            if (c < '0' || c > '9')
                throw new InputMismatchException();
            res *= 10;
            res += c - '0';
            c = read();
        } while (!isSpaceChar(c));
        return res * sgn;
    }

    public String readString()
    {
        int c = read();
        while (isSpaceChar(c))
            c = read();
        StringBuilder res = new StringBuilder();
        do
        {
            res.appendCodePoint(c);
            c = read();
        } while (!isSpaceChar(c));
        return res.toString();
    }
    public String readLine() {
        int c = read();
        while (isSpaceChar(c))
            c = read();
        StringBuilder res = new StringBuilder();
        do {
            res.appendCodePoint(c);
            c = read();
        } while (!isEndOfLine(c));
        return res.toString();
    }
    

    public double readDouble() {
        int c = read();
        while (isSpaceChar(c))
            c = read();
        int sgn = 1;
        if (c == '-') {
            sgn = -1;
            c = read();
        }
        double res = 0;
        while (!isSpaceChar(c) && c != '.') {
            if (c == 'e' || c == 'E')
                return res * Math.pow(10, readInt());
            if (c < '0' || c > '9')
                throw new InputMismatchException();
            res *= 10;
            res += c - '0';
            c = read();
        }
        if (c == '.') {
            c = read();
            double m = 1;
            while (!isSpaceChar(c)) {
                if (c == 'e' || c == 'E')
                    return res * Math.pow(10, readInt());
                if (c < '0' || c > '9')
                    throw new InputMismatchException();
                m /= 10;
                res += (c - '0') * m;
                c = read();
            }
        }
        return res * sgn;
    }
    public long readLong() {
        int c = read();
        while (isSpaceChar(c))
            c = read();
        int sgn = 1;
        if (c == '-') {
            sgn = -1;
            c = read();
        }
        long res = 0;
        do {
            if (c < '0' || c > '9')
                throw new InputMismatchException();
            res *= 10;
            res += c - '0';
            c = read();
        } while (!isSpaceChar(c));
        return res * sgn;
    }
    public boolean isSpaceChar(int c)
    {
        if (filter != null)
            return filter.isSpaceChar(c);
        return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
    }

    public String next()
    {
        return readString();
    }

    public interface SpaceCharFilter
    {
        public boolean isSpaceChar(int ch);
    }
    public boolean isEndOfLine(int c) {
        return c == '\n' || c == '\r' || c == -1;
    }
}

}