#include <bits/stdc++.h>
using namespace std;
int t, h;
vector<int> es[128];
bool visited[128];
int unvisited_adjacent(int x) {
  for (int a : es[x])
    if (!visited[a]) return a;
  assert(false);
}
void dfs(int x, vector<int>& path) {
  int k, a;
  visited[x] = true;
  path.push_back(x);
  cout << "? " << x << endl;
  cin >> k;
  for (int i = 0; i < k; i++) {
    cin >> a;
    es[x].push_back(a);
  }
  if (k == 0) exit(0);
  if (k == 1) return;
  if (k == 2) throw x;
  if (k == 3) dfs(unvisited_adjacent(x), path);
}
void bfs(int x) {
  int k, a;
  queue<int> Q;
  Q.push(x);
  int cnt = 6;
  while (cnt--) {
    x = Q.front();
    Q.pop();
    visited[x] = true;
    cout << "? " << x << endl;
    cin >> k;
    for (int i = 0; i < k; i++) {
      cin >> a;
      if (!visited[a]) Q.push(a);
    }
    if (k == 0) exit(0);
    if (k == 2) throw x;
  }
  throw Q.front();
}
void solve() {
  for (int i = 0; i < 128; i++) {
    es[i].clear();
    visited[i] = false;
  }
  vector<int> path;
  int x = 1;
  dfs(x, path);
  reverse(path.begin(), path.end());
  int depth = 7;
  while (depth > 4) {
    dfs(unvisited_adjacent(x), path);
    int m = path.size() / 2;
    depth = h - m;
    path.erase(path.begin() + m + 1, path.end());
    x = path.back();
  }
  bfs(unvisited_adjacent(x));
}
int main() {
  cin >> t;
  for (int i = 0; i < t; i++) {
    cin >> h;
    if (h == 0) exit(0);
    try {
      solve();
    } catch (int ans) {
      cout << "! " << ans << endl;
    }
  }
}
