#include <bits/stdc++.h>
std::vector<std::vector<int>> edges;
std::vector<int> deg;
int n;
int main() {
  std::cin >> n;
  edges.resize(n);
  deg.assign(n, 0);
  for (int i = 0; i < n - 1; ++i) {
    int u, v;
    std::cin >> u >> v;
    --u, --v;
    edges[u].push_back(v);
    edges[v].push_back(u);
    deg[u]++, deg[v]++;
  }
  for (int i = 0; i < n / 2; ++i) {
    int x = -1, y = -1;
    for (int j = 0; j < n; ++j) {
      if (deg[j] != 1) continue;
      if (x == -1)
        x = j;
      else
        y = j;
      if (y != -1) break;
    }
    std::cout << "? " << x + 1 << " " << y + 1 << std::endl;
    int z;
    std::cin >> z;
    --z;
    if (z == x || z == y) {
      std::cout << "! " << z + 1 << std::endl;
      return 0;
    }
    deg[x] = -1, deg[y] = -1;
    for (int u : edges[x]) deg[u]--;
    for (int u : edges[y]) deg[u]--;
  }
  for (int i = 0; i < n; ++i)
    if (deg[i] == 0) std::cout << "! " << i + 1 << std::endl;
  return 0;
}
