#include<bits/stdc++.h>
using namespace std;
int n,a,b,l[50005],r[50005],ans[50005],tot[50005],deep[50005],x=99999999,y,g;
vector<int>e[50005];
queue<int>q;
bool z[50005];
void dep(int x,int y){
deep[x]=y;
z[x]=1;
for(int i=0;i<e[x].size();i++){
if(!z[e[x][i]])dep(e[x][i],y+1);
}
}
int numl(int x){
tot[x]=1;
for(int i=0;i<e[x].size();i++){
if(deep[x]<deep[e[x][i]]){
l[x]=l[x]+numl(e[x][i])+tot[e[x][i]];
tot[x]+=tot[e[x][i]];
}
}
return l[x];
}
int numr(int x){
z[x]=1;
tot[x]=1;
r[x]=0;
for(int i=0;i<e[x].size();i++){
if(!z[e[x][i]]){
r[x]+=numr(e[x][i])+tot[e[x][i]];
tot[x]+=tot[e[x][i]];
tot[e[x][i]]=0;
r[e[x][i]]=0;
}
}
z[x]=0;
return r[x];
}
int main(){
cin>>n;
for(int i=1;i<n;i++){
cin>>a>>b;
e[a].push_back(b);
e[b].push_back(a);
}
dep(1,1);
numl(1);
for(int i=1;i<=n;i++){
ans[i]+=l[i];
}
memset(z,0,sizeof(z));
memset(tot,0,sizeof(tot));
for(int i=1;i<=n;i++){
for(int j=0;j<e[i].size();j++){
if(deep[e[i][j]]>deep[i])z[e[i][j]]=1;
}
if(!r[i])numr(i);
ans[i]+=r[i];
r[i]=0;
for(int j=0;j<e[i].size();j++){
if(deep[e[i][j]]>deep[i])z[e[i][j]]=0;
}
}
for(int i=1;i<=n;i++){
r[i]=ans[i]-l[i];
}
for(int i=1;i<=n;i++){
if(ans[i]<x){
x=ans[i];
y=i;
}
}
cout<<y<<" "<<x<<endl;
return 0;
}
记录