#include <bits/stdc++.h>
using namespace std;
const int maxn = 256;
int t;
int n;
int h, k;
bool vis[maxn];
vector<int> q, g[maxn];
int Q;
int ans;
void reset() {
  Q = 0, ans = -1;
  q.clear();
  for (int i = 0; i < maxn; i++) vis[i] = false, g[i].clear();
}
void Ans(int x) {
  if (ans != -1) return;
  ans = x;
}
void ask(int v) {
  if (g[v].size() or ans != -1) return;
  cout << "? " << v << endl;
  cin >> k;
  if (k == 2) Ans(v);
  for (int u; k--;) {
    cin >> u;
    g[v].push_back(u);
  }
  Q++;
  if (Q == 16) Ans(q[6]);
}
void dfs(int v) {
  if (ans != -1) return;
  if (!vis[v]) q.push_back(v);
  vis[v] = true;
  ask(v);
  for (int u : g[v])
    if (!vis[u]) {
      dfs(u);
      return;
    }
}
int par(int v) {
  int cnt = 0, res;
  for (int u : g[v])
    if (!vis[u]) return u;
}
void bfs(int v) {
  if (ans != -1) return;
  q.resize(0);
  q.push_back(v);
  vis[v] = true;
  for (int i = 0; i < q.size(); i++) {
    ask(q[i]);
    for (int u : g[q[i]])
      if (!vis[u]) {
        q.push_back(u);
        vis[u] = true;
      }
    if (ans != -1) return;
  }
}
void go(int v, int d) {
  if (ans != -1) return;
  if (d < 3) {
    q.resize(d + 1);
    dfs(par(v));
    go(q[q.size() / 2], q.size() / 2);
  } else
    bfs(par(v));
}
void calc() {
  reset();
  dfs(1);
  if (ans != -1) return;
  reverse(q.begin(), q.end());
  dfs(1);
  if (ans != -1) return;
  go(q[q.size() / 2], q.size() / 2);
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  for (cin >> t; t--;) {
    cin >> h;
    calc();
    cout << "! " << ans << endl;
  }
  return 0;
}
