#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 work_sep(int x)
{
if (!s1.empty())
{
int u = s[x], v, w;
int v1, v2;
set <int> :: iterator it1 = s1.upper_bound((n - s[x]) / 2);
if (it1 == s1.begin()) v1 = 2e9;
else v1 = *(--it1);
set <int> :: iterator it2 = s1.lower_bound((n - s[x] + 1) / 2);
if (it2 == s1.end()) v2 = 2e9;
else v2 = *it2;
if (abs(2 * v1 - n + s[x]) < abs(2 * v2 - n + s[x])) v = v1;
else v = v2;
w = n - u - v;
ans = min(ans, calc(u, v, w));
}
for (auto y : e[x])
{
if (y != fa[x])
{
work_sep(y);
}
}
s1.insert(x);
}
void work_anc(int x)
{
if (!s2.empty())
{
int u = s[x], v, w;
int v1, v2;
set <int> :: iterator it1 = s2.upper_bound((n - s[x]) / 2 + s[x]);
if (it1 == s2.begin()) v1 = 2e9;
else v1 = *(--it1);
set <int> :: iterator it2 = s2.lower_bound((n - s[x] + 1) / 2 + s[x]);
if (it2 == s2.end()) v2 = 2e9;
else v2 = *it2;
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()
{
ios::sync_with_stdio(0);
cin.tie(0) , cout.tie(0);
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+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuLCBhbnMgPSAyZTk7CnZlY3RvciA8aW50PiBlWzIwMDAxMF07CmludCBmYVsyMDAwMTBdLCBzWzIwMDAxMF07CmludCBjYWxjKGludCB1LCBpbnQgdiwgaW50IHcpCnsKCXJldHVybiBtYXgobWF4KHUsIHYpLCB3KSAtIG1pbihtaW4odSwgdiksIHcpOwp9CnZvaWQgZmluZF9mYShpbnQgeSwgaW50IHgpCnsKCWZhW3ldID0geDsKCWZvciAoYXV0byB6IDogZVt5XSkgaWYgKHogIT0geCkgZmluZF9mYSh6LCB5KTsKfQp2b2lkIGZpbmRfc2l6ZShpbnQgeCkKewoJZm9yIChhdXRvIHkgOiBlW3hdKSBpZiAoeSAhPSBmYVt4XSkJZmluZF9zaXplKHkpOwoJc1t4XSA9IDE7Cglmb3IgKGF1dG8geSA6IGVbeF0pIGlmICh5ICE9IGZhW3hdKSBzW3hdICs9IHNbeV07Cn0KbXVsdGlzZXQgPGludD4gczEsIHMyOwp2b2lkIHdvcmtfc2VwKGludCB4KQp7CglpZiAoIXMxLmVtcHR5KCkpCgl7CgkJaW50IHUgPSBzW3hdLCB2LCB3OwoJCWludCB2MSwgdjI7CgkJc2V0IDxpbnQ+IDo6IGl0ZXJhdG9yIGl0MSA9IHMxLnVwcGVyX2JvdW5kKChuIC0gc1t4XSkgLyAyKTsKCQlpZiAoaXQxID09IHMxLmJlZ2luKCkpIHYxID0gMmU5OwoJCWVsc2UgdjEgPSAqKC0taXQxKTsKCQlzZXQgPGludD4gOjogaXRlcmF0b3IgaXQyID0gczEubG93ZXJfYm91bmQoKG4gLSBzW3hdICsgMSkgLyAyKTsKCQlpZiAoaXQyID09IHMxLmVuZCgpKSB2MiA9IDJlOTsKCQllbHNlIHYyID0gKml0MjsKCQlpZiAoYWJzKDIgKiB2MSAtIG4gKyBzW3hdKSA8IGFicygyICogdjIgLSBuICsgc1t4XSkpIHYgPSB2MTsKCQllbHNlIHYgPSB2MjsKCQl3ID0gbiAtIHUgLSB2OwoJCWFucyA9IG1pbihhbnMsIGNhbGModSwgdiwgdykpOwoJfQoJZm9yIChhdXRvIHkgOiBlW3hdKQoJewoJCWlmICh5ICE9IGZhW3hdKQoJCXsKCQkJd29ya19zZXAoeSk7CgkJCQoJCX0KCX0KICAgIHMxLmluc2VydCh4KTsKfQp2b2lkIHdvcmtfYW5jKGludCB4KQp7CglpZiAoIXMyLmVtcHR5KCkpCgl7CgkJaW50IHUgPSBzW3hdLCB2LCB3OwoJCWludCB2MSwgdjI7CgkJc2V0IDxpbnQ+IDo6IGl0ZXJhdG9yIGl0MSA9IHMyLnVwcGVyX2JvdW5kKChuIC0gc1t4XSkgLyAyICsgc1t4XSk7CgkJaWYgKGl0MSA9PSBzMi5iZWdpbigpKSB2MSA9IDJlOTsKCQllbHNlIHYxID0gKigtLWl0MSk7CgkJc2V0IDxpbnQ+IDo6IGl0ZXJhdG9yIGl0MiA9IHMyLmxvd2VyX2JvdW5kKChuIC0gc1t4XSArIDEpIC8gMiArIHNbeF0pOwoJCWlmIChpdDIgPT0gczIuZW5kKCkpIHYyID0gMmU5OwoJCWVsc2UgdjIgPSAqaXQyOwoJCQoJCWlmIChhYnMoMiAqIHYxIC0gbiAtIHNbeF0pIDwgYWJzKDIgKiB2MiAtIG4gLSBzW3hdKSkgdiA9IHYxIC0gdTsKCQllbHNlIHYgPSB2MiAtIHU7CgkJdyA9IG4gLSB1IC0gdjsKCQkvLyBjb3V0IDw8IHggPDwgIiB8ICIgPDwgdSA8PCAiICIgPDwgdiA8PCAiICIgPDwgdyA8PCBlbmRsOwoJCWFucyA9IG1pbihhbnMsIGNhbGModSwgdiwgdykpOwoJfQoJczIuaW5zZXJ0KHNbeF0pOwoJZm9yIChhdXRvIHkgOiBlW3hdKSBpZiAoeSAhPSBmYVt4XSkgd29ya19hbmMoeSk7CglzMi5lcmFzZShzMi5maW5kKHNbeF0pKTsKfQppbnQgbWFpbigpCnsKCWlvczo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKSAsIGNvdXQudGllKDApOwoJY2luID4+IG47Cglmb3IgKGludCB4LCB5LCBpID0gMTsgaSA8IG47IGkrKykKCXsKCQljaW4gPj4geCA+PiB5OwoJCWVbeF0ucHVzaF9iYWNrKHkpOyBlW3ldLnB1c2hfYmFjayh4KTsKCX0KCWZpbmRfZmEoMSwgMCk7CglmaW5kX3NpemUoMSk7Cgl3b3JrX3NlcCgxKTsKCXdvcmtfYW5jKDEpOwoJY291dCA8PCBhbnM7CglyZXR1cm4gMDsKfQ==