#include<bits/stdc++.h> using namespace std; typedef long long LL; const LL INF = 0x3f3f3f3f; const int maxn = 1005; vector<int> G[maxn]; int n; int treeVerN[maxn]; // 以 i 为根的树,节点总数 int center, childmax; // 重心,最大子树地节点个数 void dfs(int cur, int par)//current , parent { treeVerN[cur] = 1; // 这棵树节点数目 包含根自身 int childN = G[cur].size(), curCmax = -1; for(int i = 0;i < childN; ++i) { int childSeq = G[cur][i]; if( childSeq != par){ dfs(childSeq, cur); curCmax = max(curCmax, treeVerN[childSeq]); treeVerN[cur] += treeVerN[childSeq]; } } curCmax = max(curCmax, n - treeVerN[cur]); if(curCmax < childmax) { center = cur; childmax = curCmax; }else if(curCmax == childmax) { center = min(center, cur); } } int main() { ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0); while(cin >> n) { for(int i = 1;i <= n;++i) G[i].clear(); center = -1, childmax = maxn; int u, v; for(int i = 1;i < n;++i) { cin >> u >> v; G[u].push_back(v); G[v].push_back(u); } dfs(1,-1); cout << center << " " << childmax; } return 0; }