#include <cstdio>
#include <cmath>
#include <cstring>
#include <iostream>
#include <algorithm>
typedef long long ll;
using namespace std;
const ll maxn = 400010;
ll n,head[maxn],to[maxn],nextt[maxn],
w[maxn],tot = 1,fa[maxn],len,p,path[maxn],cnt,
vis[maxn],d[maxn],maxx,dis[maxn];
void add(ll x,ll y,ll z)
{
w[tot] = z;
to[tot] = y;
nextt[tot] = head[x];
head[x] = tot++;
}
void dfs(ll u,ll faa)
{
fa[u] = faa;
if (d[u] > len)
{
p = u;
len = d[u];
}
for (ll i = head[u];i;i = nextt[i])
{
ll v = to[i];
if (v == faa)
continue;
d[v] = d[u] + w[i];
dfs(v,u);
}
}
void solve()
{
while (p != 0)
{
vis[p] = 1;
path[++cnt] = p;
p = fa[p];
}
}
void dfs2(ll u,ll faa)
{
vis[u] = 1;
if (dis[u] > maxx)
maxx = dis[u];
for (ll i = head[u];i;i = nextt[i])
{
ll v = to[i];
if (vis[v] || v == faa)
continue;
dis[v] = dis[u] + w[i];
dfs2(v,u);
}
}
int main()
{
scanf("%lld",&n);
for (ll i = 1; i < n; i++)
{
ll x,y,z;
scanf("%lld%lld%lld",&x,&y,&z);
add(x,y,z);
add(y,x,z);
}
dfs(1,0);
len = 0;
memset(d,0,sizeof(d));
dfs(p,0);
solve();
ll l = cnt,r = 1;
for (ll i = cnt; i >= 1; i--)
{
maxx = 0;
dfs2(path[i],0);
if (!maxx)
continue;
if (maxx == d[path[i]])
l = i;
if (maxx == len - d[path[i]])
{
r = i;
break;
}
}
printf("%lld\n",len);
printf("%lld\n",abs(l - r));
return 0;
}