#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  cin >> n;
  vector<set<int>> g(n);
  for (int i = 0; i < n - 1; i++) {
    int x, y;
    cin >> x >> y;
    --x;
    --y;
    g[x].insert(y);
    g[y].insert(x);
  }
  long long ans = -1;
  int u = -1, v = -1;
  int p = 0;
  bool vis[n + 1];
  memset(vis, false, sizeof(vis));
  vector<int> help;
  set<int> t;
  long long count = n / 2;
  while (count--) {
    fflush(stdout);
    for (int i = 0; i < n; i++) {
      if (g[i].size() == 1 && u == -1) {
        u = i;
      }
      if (g[i].size() == 1 && v == -1 && u != i) {
        v = i;
      }
    }
    if (u != -1 && v != -1) {
      cout << "? " << u + 1 << " " << v + 1 << "\n";
      cin >> ans;
      if (ans == u + 1 || ans == v + 1) {
        cout << "! " << ans << "\n";
        return 0;
      }
      set<int>::iterator it = g[u].begin();
      int x = *it;
      it = g[v].begin();
      int y = *it;
      g[u].clear();
      g[v].clear();
      g[x].erase(u);
      g[y].erase(v);
      u = -1, v = -1;
    }
  }
  cout << "! " << ans << "\n";
  return 0;
}
