#include <bits/stdc++.h>
using namespace std;
int n;
deque<int> adj[1001];
deque<int> leaf;
int sze[1001];
bool visit[1001];
int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n;
  for (int i = 1; i < n; i++) {
    int x, y;
    cin >> x >> y;
    adj[x].push_back(y);
    adj[y].push_back(x);
    sze[x]++, sze[y]++;
  }
  for (int i = 1; i <= n; i++)
    if (sze[i] == 1) leaf.push_back(i);
  for (int i = 0; i < n / 2; i++) {
    int a = leaf.front();
    int b = leaf.back();
    leaf.pop_front();
    leaf.pop_back();
    cout << "? " << a << ' ' << b << endl;
    int reply;
    cin >> reply;
    if (reply == a || reply == b) {
      cout << "! " << reply << endl;
      return 0;
    }
    for (auto i : adj[a]) {
      if (visit[i]) continue;
      sze[i]--;
      if (sze[i] == 1) leaf.push_back(i);
    }
    for (auto i : adj[b]) {
      if (visit[i]) continue;
      sze[i]--;
      if (sze[i] == 1) leaf.push_back(i);
    }
    visit[a] = visit[b] = true;
  }
  cout << "! " << leaf.front() << endl;
}
