N=int(input()) G=[[] for i in range(N)] L=[] for i in range(N-1): a,b=map(int,input().split()) G[a-1].append(b-1) G[b-1].append(a-1) L.append((a,b)) dist=[-1]*N from collections import deque S=deque() dist[0]=0 S.append(0) while S: x=S.pop() for y in G[x]: if dist[y]>=0: continue dist[y]=dist[x]+1 S.append(y) h=[] for i in range(N-1): a,b=L[i][:] if dist[a-1]%2==0: h.append(a) else: h.append(b) print('?',*h,flush=True) ans=input() rest=[True]*N if ans=='Yes': for i in range(N): if dist[i]%2==1: rest[i]=False else: for i in range(N): if dist[i]%2==0: rest[i]=False while True: p=[] for i in range(N): if rest[i]==True: p.append(i) if len(p)==1: x=p[0]+1 print('!',x,flush=True) exit() used=[True]*N h=[] for i in range(len(p)): if i%2==1: used[p[i]]=False for i in range(N-1): a,b=L[i][:] if rest[a-1]==True: if used[a-1]==False: h.append(b) else: h.append(a) else: if used[b-1]==False: h.append(a) else: h.append(b) print('?',*h,flush=True) ans=input() if ans=='Yes': for i in range(len(p)): if i%2==1: rest[p[i]]=False else: for i in range(len(p)): if i%2==0: rest[p[i]]=False