#include using namespace std; #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) #define ll long long const long long mod=998244353; const long long hmod=46216567629137; int main(){ cin.tie(0)->sync_with_stdio(0); cout.tie(0); int N; cin>>N; int u[N],v[N]; vectorG[N+1]; for(int i=1;i<=N-1;i++){ cin>>u[i]>>v[i]; G[u[i]].push_back(v[i]); G[v[i]].push_back(u[i]); } int l=1,r=N; bool already[N+1]; while(l!=r){ cout<<"? "; int m=(l+r)/2; for(int i=1;i<=N;i++) already[i]=1; for(int i=l;i<=m;i++) already[i]=0; int siz[N+1]; for(int i=1;i<=N;i++) siz[i]=G[i].size(); for(int i=1;i<=N-1;i++){ if(already[u[i]]==0&&already[v[i]]==0){ if(siz[u[i]]>res; if(res=="Invalid"){ while(true){ } return 0; } if(res=="Yes") r=m; else l=m+1; } cout<<"! "<