#include <bits/stdc++.h>
int a[2333][5], v1[233], v2[233], u[233];
void get(int v) {
  u[v] = 1;
  printf("? %d\n", v);
  fflush(stdout);
  scanf("%d", a[v]);
  for (int i = 1; i <= a[v][0]; ++i) scanf("%d", a[v] + i);
}
int step(int v) {
  for (int i = 1; i <= a[v][0]; ++i)
    if (!u[a[v][i]]) return a[v][i];
  return a[v][1];
}
void work() {
  memset(u, 0, sizeof u);
  int n, v = 1, dep;
  scanf("%d", &n);
  get(v);
  if (a[v][0] == 1)
    dep = 1;
  else {
    int n1 = 0, n2 = 0;
    for (int t = step(v);; t = step(t)) {
      get(t);
      v1[++n1] = t;
      if (a[t][0] == 1) break;
    }
    for (int t = step(v);; t = step(t)) {
      get(t);
      v2[++n2] = t;
      if (a[t][0] == 1) break;
    }
    dep = (n1 + n2) / 2 + 1;
    if (n1 > n2) v = v1[n1 - dep + 1];
    if (n1 < n2) v = v2[n2 - dep + 1];
  }
  while (dep < n && dep < 4) {
    int n1 = 0;
    for (int t = step(v);; t = step(t)) {
      get(t);
      v1[++n1] = t;
      if (a[t][0] == 1) break;
    }
    dep = (n1 + dep + 1) / 2;
    v = v1[n1 - dep + 1];
  }
  int z, b, c, d, e, f, g;
  if (dep < n) {
    z = step(v);
    get(z);
    if (a[z][0] == 2) v = z;
  }
  if (dep < n - 1) {
    b = step(z);
    get(b);
    if (a[b][0] == 2) v = b;
    c = step(z);
    get(c);
    if (a[c][0] == 2) v = c;
  }
  if (dep < n - 2) {
    d = step(b);
    get(d);
    if (a[d][0] == 2) v = d;
    e = step(b);
    get(e);
    if (a[e][0] == 2) v = e;
    f = step(c);
    get(f);
    if (a[f][0] == 2) v = f;
    g = step(c);
    if (a[v][0] != 2) v = g;
  }
  printf("! %d\n", v);
  fflush(stdout);
}
int main() {
  int T;
  scanf("%d", &T);
  while (T--) work();
}
