#include<bits/stdc++.h>
using namespace std;
#define int long long
int n=0,dis[50001]={0},vis[50001][2]={0},cnt[50001]={0},bsd[50001]={0},mn=0x7fffff,ans=0;
vector<int> g[50001];
void dfs(int x,int step){
cnt[x]=0;
dis[x]=step;
bsd[x]=0;
for(int i=0;i<g[x].size();i++){
int y=g[x][i];
if(!vis[y][0]){
vis[y][0]=1;
dfs(y,step+1);
bsd[x]+=cnt[y]+1;
cnt[x]=max(cnt[x],cnt[y]+1);
}
}
}
int dfs2(int x,int step){
for(int i=0;i<g[x].size();i++){
int y=g[x][i];
if(!vis[y][1]){
vis[y][1]=1;
dfs2(y,step+1);
}
}
ans+=step;
}
signed main() {
cin>>n;
for(int i=0;i<n-1;i++){
int u=0,v=0;
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
vis[1][0]=1;
dfs(1,0);
int mx=0;
for(int i=1;i<=n;i++){
cnt[i]=max(cnt[i],n-bsd[i]-1);
if(mx==0||cnt[mx]>cnt[i]){
mx=i;
}
}
cout<<mx;
vis[mx][1]=1;
dfs2(mx,0);
cout<<' '<<ans;
return 0;
}