#include <bits/stdc++.h>
using namespace std;
int n;
vector<int> E[1010];
int ask(int x, int y) {
  printf("? %d %d\n", x, y);
  fflush(stdout);
  int r;
  scanf("%d", &r);
  if (r == -1) exit(0);
  return r;
}
void output(int v) { printf("! %d\n", v); }
int dfs(int x, int fa) {
  if ((int)(E[x]).size() == 1) {
    return x;
  }
  vector<int> w;
  for (int e : E[x])
    if (e != fa) {
      w.push_back(dfs(e, x));
    }
  for (int i = 0; i + 1 < (int)(w).size(); i += 2) {
    int r = ask(w[i], w[i + 1]);
    if (r != x) {
      output(r);
      exit(0);
    }
  }
  if ((int)(w).size() % 2)
    return w.back();
  else
    return x;
}
void solve() {
  scanf("%d", &n);
  for (int i = 0; i < (n - 1); i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    E[x].push_back(y);
    E[y].push_back(x);
  }
  if (n == 2) {
    int v = ask(1, 2);
    output(v);
    return;
  }
  int rt = -1;
  for (int i = 1; i <= n; i++)
    if ((int)(E[i]).size() > 1) {
      rt = i;
      break;
    }
  int r = dfs(rt, -1);
  if (r != rt) {
    output(ask(r, rt));
  } else
    output(r);
}
int main() {
  int t = 1;
  for (int tt = 0; tt < (t); tt++) {
    solve();
  }
  return 0;
}
