#include<bits/stdc++.h>
using namespace std;
vector<int>edge[1000000];
bool vis[1000000];int dis[1000000];int sz[1000000];int dp[1000000];
int n;
int dfs(int pos,int s){
if(vis[pos])return 0;
vis[pos]=1;
dis[pos]=s;
int sum=0;
for(int i=0;i<edge[pos].size();i++){
int npos=edge[pos][i];
sum+=dfs(npos,s+1);
}
sz[pos]=sum+1;
return sz[pos];
}
void solution(int pos,int fa){
if(vis[pos])return;
vis[pos]=1;
dp[pos]=dp[fa]+n-2*sz[pos];
cout<<pos<<" "<<dp[pos]<<endl;
for(int i=0;i<edge[pos].size();i++){
int npos=edge[pos][i];
solution(npos,pos);
}
}
int main(){
cin>>n;
for(int i=0,u,v;i<n-1;i++){
cin>>u>>v;
edge[u].push_back(v);
edge[v].push_back(u);
}
dfs(1,0);
memset(vis,0,sizeof(vis));
vis[1]=1;
for(int i=1;i<=n;i++)dp[1]+=dis[i];
for(int i=0;i<edge[1].size();i++){
int npos=edge[1][i];
solution(npos,1);
}
int ans=10000000,res;
for(int i=1;i<=n;i++){
if(dp[i]<ans){
ans=dp[i];
res=i;
}
}
cout<<res<<" "<<ans<<endl;
return 0;
}