1 #include <iostream>
2 #include <string.h>
3 #include <stdio.h>
4
5 using namespace std;
6 const int maxn = 20005;
7 const int inf = 0x3f3f3f3f;
8
9 int head[maxn];
10 int sz[maxn];
11 int cnt,n;
12 int ans,siz;
13
14 struct Edge{
15 int to;
16 int nxt;
17 };
18
19 Edge edge[2*maxn];
20
21 void Init(){
22 cnt=0;
23 siz=inf;
24 memset(head,-1,sizeof(head));
25 }
26
27 void add(int u,int v){
28 edge[cnt].to = v;
29 edge[cnt].nxt = head[u];
30 head[u] = cnt++;
31 }
32
33 void dfs(int u,int fa)
34 {
35 sz[u]=1;
36 int tmp=0;
37 for(int i=head[u];~i;i=edge[i].nxt){
38 int v=edge[i].to;
39 if(v!=fa){
40 dfs(v,u);
41 sz[u]+=sz[v];
42 tmp=max(tmp,sz[v]);
43 }
44 }
45 tmp=max(tmp,n-sz[u]);
46 if(tmp<siz || (tmp==siz && u<ans)){
47 ans=u;
48 siz=tmp;
49 }
50 }
51
52 int main()
53 {
54 int t;
55 scanf("%d",&t);
56 while(t--){
57 Init();
58 scanf("%d",&n);
59 for(int i=1;i<=n-1;i++){
60 int u,v;
61 scanf("%d%d",&u,&v);
62 add(u,v);add(v,u);
63 }
64 dfs(1,0);
65 printf("%d %d\n",ans,siz);
66 }
67 return 0;
68 }