#include <bits/stdc++.h>
using namespace std;
void solve() {
  int n;
  cin >> n;
  vector<int> adj[n];
  for (int i = 0; i < n - 1; i++) {
    int a, b;
    cin >> a >> b;
    a--;
    b--;
    adj[a].push_back(b);
    adj[b].push_back(a);
  }
  bool used[n];
  memset(used, false, sizeof used);
  int uc = 0;
  while (true) {
    if (uc == n - 1) {
      for (int i = 0; i < n; i++) {
        if (!used[i]) {
          cout << "! " << i + 1 << endl;
          cout.flush();
          return;
        }
      }
    }
    int v1 = -1;
    int v2 = -1;
    for (int i = 0; i < n; i++) {
      if (used[i]) {
        continue;
      }
      int ct = 0;
      for (int j = 0; j < adj[i].size(); j++) {
        if (!used[adj[i][j]]) {
          ct++;
        }
      }
      if (ct == 1) {
        if (v1 == -1) {
          v1 = i;
        } else {
          v2 = i;
          break;
        }
      }
    }
    cout << "? " << v1 + 1 << " " << v2 + 1 << endl;
    ;
    cout.flush();
    int l;
    cin >> l;
    l--;
    if (l == v1 || l == v2) {
      cout << "! " << l + 1 << endl;
      cout.flush();
      return;
    }
    used[v1] = true;
    used[v2] = true;
    uc += 2;
  }
}
void querySolve() {
  int n;
  cin >> n;
  while (n--) {
    solve();
  }
}
int main() { solve(); }
