#include <bits/stdc++.h>
using namespace std;
int marked[2000];
vector<int> adj[2000];
int dfs(int s) {
  marked[s] = 1;
  for (int t : adj[s]) {
    if (!marked[t]) return dfs(t);
  }
  return s;
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n - 1; ++i) {
    int u, v;
    scanf("%d%d", &u, &v);
    adj[u].push_back(v);
    adj[v].push_back(u);
  }
  int root = 1;
  while (1) {
    int x = dfs(root), y = dfs(root);
    if (x == root) break;
    printf("? %d %d\n", x, y);
    fflush(stdout);
    scanf("%d", &root);
  }
  printf("! %d\n", root);
  fflush(stdout);
  return 0;
}
