#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 1005;
const long long MOD = 1e9 + 7;
const long long INF = 1e18;
set<long long> g[MAXN];
signed main() {
  long long n;
  cin >> n;
  for (long long i = 0; i < n - 1; i++) {
    long long u, v;
    cin >> u >> v;
    u--;
    v--;
    g[u].insert(v);
    g[v].insert(u);
  }
  vector<bool> del(n);
  while (1) {
    long long a = -1, b = -1;
    for (long long i = 0; i < n; i++) {
      if (g[i].size() == 1) {
        if (a == -1) {
          a = i;
        } else {
          b = i;
          break;
        }
      }
    }
    if (a == -1 && b == -1) {
      for (long long i = 0; i < n; i++) {
        if (!del[i]) {
          cout << "! " << i + 1 << endl;
          return 0;
        }
      }
    }
    if (b == -1 && a != -1) {
      cout << "! " << a + 1 << endl;
      return 0;
    }
    cout << "? " << a + 1 << " " << b + 1 << endl;
    long long lca;
    cin >> lca;
    lca--;
    if (lca == a || lca == b) {
      cout << "! " << lca + 1 << endl;
      return 0;
    }
    long long del1 = *g[a].begin(), del2 = *g[b].begin();
    g[a].clear();
    g[b].clear();
    g[del1].erase(a);
    g[del2].erase(b);
    del[a] = 1;
    del[b] = 1;
  }
  return 0;
}
