#include <bits/stdc++.h>
void err() { std::cout << std::endl; }
template <typename T, typename... Args>
void err(T a, Args... args) {
  std::cout << a << ' ';
  err(args...);
}
using namespace std;
const int mod = 1e9 + 7;
const int maxn = 1e3 + 22;
int n, m, d[maxn], vis[maxn], root0, g[maxn];
int v[maxn][maxn], c, x, y;
int main() {
  cin >> n;
  for (int i = 1; i <= n - 1; i++) {
    cin >> x >> y;
    d[x]++;
    d[y]++;
    v[x][y] = 1;
    v[y][x] = 1;
  }
  int k1, k2, cnt = 1;
  while (cnt <= n / 2) {
    int a, b;
    for (int i = 1; i <= n; i++) {
      if (d[i] == 1) {
        a = i;
        d[i]--;
        break;
      }
    }
    for (int i = 1; i <= n; i++) {
      if (d[i] == 1) {
        b = i;
        d[i]--;
        break;
      }
    }
    for (int i = 1; i <= n; i++) {
      if (v[a][i]) {
        v[a][i] = 0;
        v[i][a] = 0;
        d[i]--;
      }
    }
    for (int i = 1; i <= n; i++) {
      if (v[b][i]) {
        v[b][i] = 0;
        v[i][b] = 0;
        d[i]--;
      }
    }
    g[a] = 1;
    g[b] = 1;
    cout << "? " << a << " " << b << endl;
    cin >> c;
    if (c == a || c == b) {
      cout << "! " << c << endl;
      return 0;
    }
    cnt++;
  }
  for (int i = 1; i <= n; i++) {
    if (!g[i]) {
      cout << "! " << i << endl;
      break;
    }
  }
  return 0;
}
