#include <bits/stdc++.h>
using namespace std;
#define Task "KPATH"
#define sz(x) (int)x.size()
#define bit(x, i) ((x >> i) & 1)
#define sp " "
#define endl "\n"
constexpr int maxn = 3e5 + 5;
int n;
vector<int> g[maxn];
int degcnt[maxn];
int in[maxn];
bool check(vector<int> &u) {
int k = sz(u);
for(int x : u) in[x] = 1;
fill(degcnt + 1, degcnt + n + 1, 0);
int edge = 0;
for (auto v : u) {
for (auto to : g[v]) {
if (in[to]) {
edge++;
degcnt[v]++;
}
}
}
edge /= 2;
if(k == 1) return true;
if(edge != k - 1) return false;
int tmp = 0;
for(int v : u) {
if(degcnt[v] == 1) tmp++;
else if(degcnt[v] == 2);
else return false;
}
return tmp == 2;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
if(fopen(Task".inp", "r")) {
freopen(Task".inp", "r", stdin);
freopen(Task".out", "w", stdout);
}
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);
}
for(int k = 1; k <= n; k++) {
vector<int> Pmask;
for(int mask = 0; mask < (1 << k); mask++) {
if(__builtin_popcount(mask) != k) continue;
vector<int> cur;
for(int i = 1; i <= n; i++) {
if(bit(mask, i)) {
cur.push_back(i);
}
if(check(cur)) {
Pmask.push_back(mask);
}
}
}
int m = sz(Pmask);
int ans = 0;
for(int mask = 0; mask < (1 << m); mask++) {
bool isValid = true;
int cnt = 0;
for(int i = 0; i < m; i++) {
if(bit(mask, i)) {
if(cnt & Pmask[i]) {
isValid = false;
break;
}
cnt |= Pmask[i];
}
}
if(isValid) {
ans = max(ans, (int)__builtin_popcount(mask));
}
}
cout << ans << endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIFRhc2sgIktQQVRIIgojZGVmaW5lIHN6KHgpIChpbnQpeC5zaXplKCkKI2RlZmluZSBiaXQoeCwgaSkgKCh4ID4+IGkpICYgMSkKI2RlZmluZSBzcCAiICIKI2RlZmluZSBlbmRsICJcbiIKCmNvbnN0ZXhwciBpbnQgbWF4biA9IDNlNSArIDU7CgppbnQgbjsKdmVjdG9yPGludD4gZ1ttYXhuXTsKaW50IGRlZ2NudFttYXhuXTsKaW50IGluW21heG5dOwoKYm9vbCBjaGVjayh2ZWN0b3I8aW50PiAmdSkgewogICAgaW50IGsgPSBzeih1KTsKICAgIGZvcihpbnQgeCA6IHUpIGluW3hdID0gMTsKICAgIGZpbGwoZGVnY250ICsgMSwgZGVnY250ICsgbiArIDEsIDApOwoKICAgIGludCBlZGdlID0gMDsKCiAgICBmb3IgKGF1dG8gdiA6IHUpIHsKICAgICAgICBmb3IgKGF1dG8gdG8gOiBnW3ZdKSB7CiAgICAgICAgICAgIGlmIChpblt0b10pIHsKICAgICAgICAgICAgICAgIGVkZ2UrKzsKICAgICAgICAgICAgICAgIGRlZ2NudFt2XSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWRnZSAvPSAyOwoKICAgIGlmKGsgPT0gMSkgcmV0dXJuIHRydWU7CiAgICBpZihlZGdlICE9IGsgLSAxKSByZXR1cm4gZmFsc2U7CgogICAgaW50IHRtcCA9IDA7CgogICAgZm9yKGludCB2IDogdSkgewogICAgICAgIGlmKGRlZ2NudFt2XSA9PSAxKSB0bXArKzsKICAgICAgICBlbHNlIGlmKGRlZ2NudFt2XSA9PSAyKTsKICAgICAgICBlbHNlIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAgICAgICAgcmV0dXJuIHRtcCA9PSAyOwp9CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKCiAgICBpZihmb3BlbihUYXNrIi5pbnAiLCAiciIpKSB7CiAgICAgICAgZnJlb3BlbihUYXNrIi5pbnAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKFRhc2siLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KCiAgICBjaW4gPj4gbjsKCiAgICBmb3IoaW50IGkgPSAxOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgaW50IHUsIHY7CiAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICBnW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICBnW3ZdLnB1c2hfYmFjayh1KTsKICAgIH0KCiAgICBmb3IoaW50IGsgPSAxOyBrIDw9IG47IGsrKykgewogICAgICAgIHZlY3RvcjxpbnQ+IFBtYXNrOwogICAgICAgIGZvcihpbnQgbWFzayA9IDA7IG1hc2sgPCAoMSA8PCBrKTsgbWFzaysrKSB7CiAgICAgICAgICAgIGlmKF9fYnVpbHRpbl9wb3Bjb3VudChtYXNrKSAhPSBrKSBjb250aW51ZTsKCiAgICAgICAgICAgIHZlY3RvcjxpbnQ+IGN1cjsKICAgICAgICAgICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmKGJpdChtYXNrLCBpKSkgewogICAgICAgICAgICAgICAgICAgIGN1ci5wdXNoX2JhY2soaSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYoY2hlY2soY3VyKSkgewogICAgICAgICAgICAgICAgICAgIFBtYXNrLnB1c2hfYmFjayhtYXNrKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaW50IG0gPSBzeihQbWFzayk7CiAgICAgICAgaW50IGFucyA9IDA7CgogICAgICAgIGZvcihpbnQgbWFzayA9IDA7IG1hc2sgPCAoMSA8PCBtKTsgbWFzaysrKSB7CiAgICAgICAgICAgIGJvb2wgaXNWYWxpZCA9IHRydWU7CiAgICAgICAgICAgIGludCBjbnQgPSAwOwoKICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IG07IGkrKykgewogICAgICAgICAgICAgICAgaWYoYml0KG1hc2ssIGkpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoY250ICYgUG1hc2tbaV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY250IHw9IFBtYXNrW2ldOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZihpc1ZhbGlkKSB7CiAgICAgICAgICAgICAgICBhbnMgPSBtYXgoYW5zLCAoaW50KV9fYnVpbHRpbl9wb3Bjb3VudChtYXNrKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGNvdXQgPDwgYW5zIDw8IGVuZGw7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=