#include <bits/stdc++.h>
const double pi = acos(-1.0);
const double eps = 1e-9;
const int INF = 1e9;
const int mod = 1e9 + 7;
using namespace std;
vector<vector<int>> g;
void solve() {
  int n;
  cin >> n;
  g.resize(n);
  for (int i = 0; i < n - 1; ++i) {
    int a, b;
    cin >> a >> b;
    a--;
    b--;
    g[a].push_back(b);
    g[b].push_back(a);
  }
  vector<bool> used(n);
  vector<int> pow(n);
  for (int i = 0; i < n; ++i) pow[i] = g[i].size();
  int cnt = n;
  while (1) {
    if (cnt == 1) {
      for (int i = 0; i < n; ++i) {
        if (!used[i]) {
          cout << "! " << i + 1 << endl;
          return;
        }
      }
    } else {
      vector<int> lists;
      for (int i = 0; i < n; ++i)
        if (pow[i] == 1 && !used[i]) lists.push_back(i);
      cout << "? " << lists[0] + 1 << ' ' << lists[1] + 1 << endl;
      int lca;
      cin >> lca;
      if (pow[lca - 1] == 1) {
        cout << "! " << lca << endl;
        return;
      } else {
        cnt -= 2;
        used[lists[0]] = 1;
        used[lists[1]] = 1;
        pow[lists[0]] = 0;
        pow[lists[1]] = 0;
        for (auto i : g[lists[0]]) pow[i]--;
        for (auto i : g[lists[1]]) pow[i]--;
      }
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cout << fixed << setprecision(6);
  int n = 1;
  for (int i = 0; i < n; ++i) solve();
}
