#include <bits/stdc++.h>
using namespace std;
vector<int> adj[129];
bool vis[129];
int h;
int depth;
int pc;
int curr;
int qcnt;
bool geta(int v) {
  if (adj[v].size() == 0) {
    if (qcnt == 0) {
      cout << "! " << v << endl;
      return true;
    }
    cout << "? " << v << endl;
    int k;
    cin >> k;
    for (int i = 0; i < k; i++) {
      int u;
      cin >> u;
      adj[v].push_back(u);
    }
    if (k == 2) {
      cout << "! " << v << endl;
      return true;
    }
    qcnt--;
    return false;
  }
  return false;
}
bool getdepth() {
  curr = 1;
  if (geta(1)) return true;
  if (adj[1].size() == 1) {
    pc = -1;
    depth = h - 1;
    return false;
  }
  int vs[2], ov[2];
  vs[0] = ov[0] = adj[1][0], vs[1] = ov[1] = adj[1][1];
  int cnt = 2;
  while (1) {
    for (int i = 0; i < 2; i++) {
      if (geta(vs[i])) return true;
      if (adj[vs[i]].size() == 1) {
        pc = ov[i];
        depth = h - cnt;
        return false;
      }
      int nv;
      for (auto it : adj[vs[i]])
        if (adj[it].size() == 0) {
          nv = it;
          break;
        }
      vs[i] = nv;
    }
    cnt++;
  }
}
bool scaleup() {
  if (depth == h - 1) {
    pc = curr;
    curr = adj[curr][0];
    if (geta(curr)) return true;
    depth--;
    return false;
  }
  int pv[2], vs[2], ov[2];
  pv[0] = pv[1] = curr;
  int ii = 0;
  for (int i = 0; i < 3; i++)
    if (adj[curr][i] != pc) vs[ii] = ov[ii] = adj[curr][i], ii++;
  for (int i = 0; i < h - 2 - depth; i++)
    for (int j = 0; j < 2; j++) {
      if (geta(vs[j])) return true;
      int nv;
      for (auto it : adj[vs[j]])
        if (it != pv[j]) {
          nv = it;
          break;
        }
      pv[j] = vs[j];
      vs[j] = nv;
    }
  pc = curr;
  for (int i = 0; i < 2; i++) {
    if (geta(vs[i])) return true;
    if (adj[vs[i]].size() != 1) curr = ov[i];
  }
  depth--;
  return false;
}
void bfs() {
  fill(vis, vis + sizeof(vis) / sizeof(vis[0]), false);
  queue<int> q;
  q.push(curr);
  vis[curr] = true;
  while (1) {
    int v = q.front();
    q.pop();
    if (geta(v)) return;
    for (auto it : adj[v])
      if (!vis[it]) {
        vis[it] = true;
        q.push(it);
      }
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  int T;
  cin >> T;
  while (T--) {
    qcnt = 16;
    for (int i = 1; i <= 128; i++) adj[i].clear();
    cin >> h;
    if (getdepth()) goto imdone;
    while (depth > 2) {
      if (scaleup()) goto imdone;
    }
    bfs();
  imdone:;
  }
  return 0;
}
