rt
#include<bits/stdc++.h>
using namespace std;
vector<int>edge[50010];
int dep[50010],size[50010],father[50010],res,index,n,tot;
void pre(int u,int fa){
size[u]=1;
father[u]=fa;
for(int i=0;i<edge[u].size();i++){
int v=edge[u][i];
if(v==fa)continue;
pre(v,u);
size[u]+=size[v];
}
}
bool iscore(int u){
if(n-size[u]>n/2){
return false;
}
for(int i=0;i<edge[u].size();i++){
int v=edge[u][i];
if(v==father[u])continue;
if(size[v]>n/2){
return false;
}
}
return true;
}
void dfs(int u,int fa){
dep[u]=dep[fa]+1;
for(int i=0;i<edge[u][i];i++){
int v=edge[u][i];
if(v==fa)continue;
dfs(v,u);
}
res+=dep[u]-1;
}
int main(){
cin>>n;
for(int i=1;i<n;i++){
int u,v;
cin>>u>>v;
edge[u].push_back(v);
edge[v].push_back(u);
}
pre(1,0);
for(int i=1;i<=n;i++){
if(iscore(i)){
dfs(i,0);
cout<<i<<" "<<res<<endl;
return 0;
}
}
return 0;
}