#include <bits/stdc++.h>
using namespace std;
int h;
vector<int> nei[300];
int conta;
bool ask(int x) {
  if (nei[x].size() != 0) return false;
  if (conta == 16) {
    printf("! %d\n", x);
    fflush(stdout);
    return true;
  }
  conta++;
  printf("? %d\n", x);
  fflush(stdout);
  int r;
  scanf("%d", &r);
  if (r == 0) exit(0);
  nei[x].resize(r);
  for (int i = 0; i < r; i++) scanf("%d", &(nei[x][i]));
  if (r == 2) {
    printf("! %d\n", x);
    fflush(stdout);
    return true;
  }
  return false;
}
vector<int> dep(int a, int b) {
  if (ask(b)) return {};
  if (nei[b].size() == 1) return {b, a};
  vector<int> d;
  if (nei[b][0] != a)
    d = dep(b, nei[b][0]);
  else
    d = dep(b, nei[b][1]);
  if (d.size() == 0) return d;
  d.push_back(a);
  return d;
}
void solve() {
  conta = 0;
  scanf("%d", &h);
  if (h == 0) exit(0);
  for (int i = 1; i < (1 << h); i++) nei[i].clear();
  if (ask(1)) return;
  int liv = 1;
  int nu = nei[1][0];
  if (nei[1].size() == 3) {
    vector<int> d0 = dep(1, nei[1][0]);
    if (d0.size() == 0) return;
    vector<int> d1 = dep(1, nei[1][1]);
    if (d1.size() == 0) return;
    if (d0.size() == d1.size()) {
      nu = nei[1][2];
    } else if (d0.size() < d1.size()) {
      nu = d1[d1.size() - (d1.size() - d0.size()) / 2 - 1];
      int i = 0;
      while (nei[nei[nu][i]].size() > 0) i++;
      nu = nei[nu][i];
    } else {
      nu = d0[d0.size() - (d0.size() - d1.size()) / 2 - 1];
      int i = 0;
      while (nei[nei[nu][i]].size() > 0) i++;
      nu = nei[nu][i];
    }
    liv = (d1.size() + d0.size()) / 2;
  }
  while (liv < 4) {
    if (ask(nu)) return;
    int i = 0;
    while (nei[nei[nu][i]].size() > 0) i++;
    vector<int> d = dep(nu, nei[nu][i]);
    if (d.size() == 0) return;
    nu = d[d.size() - (d.size() - liv - 1) / 2 - 1];
    while (nei[nei[nu][i]].size() > 0) i++;
    nu = nei[nu][i];
    liv = (d.size() + liv + 1) / 2;
  }
  if (ask(nu)) return;
  int i = 0;
  while (nei[nei[nu][i]].size() > 0) i++;
  int a = nei[nu][i];
  i++;
  while (nei[nei[nu][i]].size() > 0) i++;
  int b = nei[nu][i];
  if (ask(a)) return;
  if (ask(b)) return;
  for (int x : nei[a])
    if (ask(x)) return;
  for (int x : nei[b])
    if (ask(x)) return;
  return;
}
int main() {
  int t;
  scanf("%d", &t);
  for (int i = 0; i < t; i++) solve();
  return 0;
}
