#include <bits/stdc++.h>
using namespace std;
int n, ans = 2e9;
vector <int> e[200010];
int fa[200010], s[200010];
int calc(int u, int v, int w)
{
return max(max(u, v), w) - min(min(u, v), w);
}
void find_fa(int y, int x)
{
fa[y] = x;
for (auto z : e[y]) if (z != x) find_fa(z, y);
}
void find_size(int x)
{
for (auto y : e[x]) if (y != fa[x]) find_size(y);
s[x] = 1;
for (auto y : e[x]) if (y != fa[x]) s[x] += s[y];
}
multiset <int> s1, s2;
void insert_tree(int x)
{
s1.insert(s[x]);
for (auto y : e[x]) if (y != fa[x]) insert_tree(y);
}
void work_sep(int x)
{
if (!s1.empty())
{
int u = s[x], v, w;
int v1 = *(--s1.upper_bound((n - s[x]) / 2));
int v2 = *s1.lower_bound((n - s[x] + 1) / 2);
if (abs(2 * v1 - n + s[x]) < abs(2 * v2 - n + s[x])) v = v1;
else v = v2;
w = n - u - v;
cout << x << " | ";
for (auto temp : s1) cout << temp << " ";
cout << endl;
ans = min(ans, calc(u, v, w));
cout << "/" << u << " " << v << " " << w << endl;
}
for (auto y : e[x])
{
if (y != fa[x])
{
work_sep(y);
insert_tree(y);
}
}
}
void work_anc(int x)
{
if (!s2.empty())
{
int u = s[x], v, w;
int v1 = *(--s2.upper_bound((n - s[x]) / 2 + s[x]));
int v2 = *s2.lower_bound((n - s[x] + 1) / 2 + s[x]);
if (v1 == 0) v1 = 2e9;
if (v2 == 0) v2 = 2e9;
if (abs(2 * v1 - n - s[x]) < abs(2 * v2 - n - s[x])) v = v1 - u;
else v = v2 - u;
w = n - u - v;
// cout << x << " | " << u << " " << v << " " << w << endl;
ans = min(ans, calc(u, v, w));
}
s2.insert(s[x]);
for (auto y : e[x]) if (y != fa[x]) work_anc(y);
s2.erase(s2.find(s[x]));
}
int main()
{
cin >> n;
for (int x, y, i = 1; i < n; i++)
{
cin >> x >> y;
e[x].push_back(y); e[y].push_back(x);
}
find_fa(1, 0);
find_size(1);
work_sep(1);
work_anc(1);
cout << ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuLCBhbnMgPSAyZTk7CnZlY3RvciA8aW50PiBlWzIwMDAxMF07CmludCBmYVsyMDAwMTBdLCBzWzIwMDAxMF07CmludCBjYWxjKGludCB1LCBpbnQgdiwgaW50IHcpCnsKCXJldHVybiBtYXgobWF4KHUsIHYpLCB3KSAtIG1pbihtaW4odSwgdiksIHcpOwp9CnZvaWQgZmluZF9mYShpbnQgeSwgaW50IHgpCnsKCWZhW3ldID0geDsKCWZvciAoYXV0byB6IDogZVt5XSkgaWYgKHogIT0geCkgZmluZF9mYSh6LCB5KTsKfQp2b2lkIGZpbmRfc2l6ZShpbnQgeCkKewoJZm9yIChhdXRvIHkgOiBlW3hdKSBpZiAoeSAhPSBmYVt4XSkJZmluZF9zaXplKHkpOwoJc1t4XSA9IDE7Cglmb3IgKGF1dG8geSA6IGVbeF0pIGlmICh5ICE9IGZhW3hdKSBzW3hdICs9IHNbeV07Cn0KbXVsdGlzZXQgPGludD4gczEsIHMyOwp2b2lkIGluc2VydF90cmVlKGludCB4KQp7CglzMS5pbnNlcnQoc1t4XSk7Cglmb3IgKGF1dG8geSA6IGVbeF0pIGlmICh5ICE9IGZhW3hdKSBpbnNlcnRfdHJlZSh5KTsKfQp2b2lkIHdvcmtfc2VwKGludCB4KQp7CglpZiAoIXMxLmVtcHR5KCkpCgl7CgkJaW50IHUgPSBzW3hdLCB2LCB3OwoJCWludCB2MSA9ICooLS1zMS51cHBlcl9ib3VuZCgobiAtIHNbeF0pIC8gMikpOwoJCWludCB2MiA9ICpzMS5sb3dlcl9ib3VuZCgobiAtIHNbeF0gKyAxKSAvIDIpOwoJCWlmIChhYnMoMiAqIHYxIC0gbiArIHNbeF0pIDwgYWJzKDIgKiB2MiAtIG4gKyBzW3hdKSkgdiA9IHYxOwoJCWVsc2UgdiA9IHYyOwoJCXcgPSBuIC0gdSAtIHY7CiAgICAgICAgY291dCA8PCB4IDw8ICIgfCAiOwogICAgICAgIGZvciAoYXV0byB0ZW1wIDogczEpIGNvdXQgPDwgdGVtcCA8PCAiICI7CiAgICAgICAgY291dCA8PCBlbmRsOwoJCWFucyA9IG1pbihhbnMsIGNhbGModSwgdiwgdykpOwoJCWNvdXQgPDwgIi8iIDw8IHUgPDwgIiAiIDw8IHYgPDwgIiAiIDw8IHcgPDwgZW5kbDsKCX0KCWZvciAoYXV0byB5IDogZVt4XSkKCXsKCQlpZiAoeSAhPSBmYVt4XSkKICAgICAgICB7CgkJCXdvcmtfc2VwKHkpOwogICAgCQlpbnNlcnRfdHJlZSh5KTsKICAgICAgICB9Cgl9Cn0Kdm9pZCB3b3JrX2FuYyhpbnQgeCkKewoJaWYgKCFzMi5lbXB0eSgpKQoJewoJCWludCB1ID0gc1t4XSwgdiwgdzsKCQlpbnQgdjEgPSAqKC0tczIudXBwZXJfYm91bmQoKG4gLSBzW3hdKSAvIDIgKyBzW3hdKSk7CgkJaW50IHYyID0gKnMyLmxvd2VyX2JvdW5kKChuIC0gc1t4XSArIDEpIC8gMiArIHNbeF0pOwoJCWlmICh2MSA9PSAwKSB2MSA9IDJlOTsKCQlpZiAodjIgPT0gMCkgdjIgPSAyZTk7CgkJaWYgKGFicygyICogdjEgLSBuIC0gc1t4XSkgPCBhYnMoMiAqIHYyIC0gbiAtIHNbeF0pKSB2ID0gdjEgLSB1OwoJCWVsc2UgdiA9IHYyIC0gdTsKCQl3ID0gbiAtIHUgLSB2OwoJCS8vIGNvdXQgPDwgeCA8PCAiIHwgIiA8PCB1IDw8ICIgIiA8PCB2IDw8ICIgIiA8PCB3IDw8IGVuZGw7CgkJYW5zID0gbWluKGFucywgY2FsYyh1LCB2LCB3KSk7Cgl9CglzMi5pbnNlcnQoc1t4XSk7Cglmb3IgKGF1dG8geSA6IGVbeF0pIGlmICh5ICE9IGZhW3hdKSB3b3JrX2FuYyh5KTsKCXMyLmVyYXNlKHMyLmZpbmQoc1t4XSkpOwp9CmludCBtYWluKCkKewoJY2luID4+IG47Cglmb3IgKGludCB4LCB5LCBpID0gMTsgaSA8IG47IGkrKykKCXsKCQljaW4gPj4geCA+PiB5OwoJCWVbeF0ucHVzaF9iYWNrKHkpOyBlW3ldLnB1c2hfYmFjayh4KTsKCX0KCWZpbmRfZmEoMSwgMCk7CglmaW5kX3NpemUoMSk7Cgl3b3JrX3NlcCgxKTsKCXdvcmtfYW5jKDEpOwoJY291dCA8PCBhbnM7CglyZXR1cm4gMDsKfQ==