#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<iomanip>
#include<queue>
#include<list>
#include<math.h>
#include<cctype>
#include<map>
#include<stack>
#define maxn 100010
using namespace std;
typedef long long ll;
typedef unsigned long wf;
typedef unsigned int u32;
typedef unsigned long long u64;
int f[maxn],size[maxn],head[maxn],dep[maxn];
int n,center,sum=0;
vector<int> G[maxn];
queue<int> q;
void getcenter(int now,int father){
size[now]=1;
f[now]=0;
for(int i=0;i<G[now].size();i++){
int v=G[now][i];
if(v==father)continue;
getcenter(v,now);
size[now]+=size[v];
f[now]=max(f[now],size[v]);
if(f[now]<f[center] || (f[now]==f[center])&&now<center)
center=now;
}
}
void bfs(){
q.push(center);
while(!q.empty()){
int u=q.front();
q.pop();
for(int i=0;i<G[u].size();i++){
int v=G[u][i];
if(dep[v]||v==center)continue;
dep[v]=dep[u]+1;
sum+=dep[v];
q.push(v);
}
}
}
int main(){
cin>>n;
for(int i=1;i<n;i++){
int u,v;
cin>>u>>v;
G[u].push_back(v);
G[v].push_back(u);
}
center=0;f[0]=maxn*100;
getcenter(1,0);
bfs();
cout<<center-1<<" "<<sum;
return 0;
}