#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <queue>
#include <stack>
#include <string>
#include <bitset>
#include <cstdio>
#include <limits>
#include <vector>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <fstream>
#include <numeric>
#include <sstream>
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
int dep[30],dia[30], vis;
vector<int> g[22];
void dfs2(int x, int p){
vis++;
for(auto it : g[x]){
if(it != p)
dfs2(it,x);
}
}
bool istree(int n,int x,int y){
vis=0;
int nodes = __builtin_popcount(x);
int edges = y;
int start;
if(nodes-1 != edges) return false;
for(int j=0;j<n;j++){
if((1<<j) & x){
start=j;
break;
}
}
dfs2(start,start);
if(vis == nodes) return true;
else return false;
}
void dfs(int x,int p){
dep[x] = dep[p] + 1;
for(auto it : g[x]){
if(it != p){
dfs(it, x);
}
}
}
int main() {
int n;
cin>>n;
int u[n],v[n];
for(int i=0;i<n-1;i++){
cin>>u[i]>>v[i];
u[i]--;v[i]--;
}
for(int i=1;i<(1<<n);i++){
for(int j=0;j<=n;j++)
g[j].clear();
int cnt=0,st=-1;
for(int j=0;j<n-1;j++){
int x=u[j];
int y=v[j];
if((1<<x) & i){
if((1<<y) & i){
cnt++;
g[x].push_back(y);
g[y].push_back(x);
}
}
}
if(!istree(n,i,cnt)) continue;
int maxx = 0;
int node = 0;
memset(dep,0,sizeof(dep));
int start;
for(int j=0;j<n;j++){
if((1<<j) & i){
start=j;
break;
}
}
dfs(start,start);
for(int j=0;j<n;j++){
if(dep[j] > maxx){
maxx = dep[j];
node = j;
}
}
memset(dep,0,sizeof(dep));
dfs(node,node);
maxx = 0;
for(int j=0;j<n;j++){
if(dep[j] > maxx){
maxx = dep[j];
node = j;
}
}
dia[maxx-1]++;
}
for(int i=1;i<=n-1;i++)
cout<<dia[i]<<"\n";
return 0;
}
I2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPGxpc3Q+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGN0aW1lPgojaW5jbHVkZSA8ZGVxdWU+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPHN0YWNrPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8Yml0c2V0PgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8bGltaXRzPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Y2xpbWl0cz4KI2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDxjc3RkbGliPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPG51bWVyaWM+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IGRlcFszMF0sZGlhWzMwXSwgdmlzOwp2ZWN0b3I8aW50PiBnWzIyXTsKdm9pZCBkZnMyKGludCB4LCBpbnQgcCl7CiAgICB2aXMrKzsKICAgIGZvcihhdXRvIGl0IDogZ1t4XSl7CiAgICAgICAgaWYoaXQgIT0gcCkKICAgICAgICAgICAgZGZzMihpdCx4KTsKICAgIH0KfQpib29sIGlzdHJlZShpbnQgbixpbnQgeCxpbnQgeSl7CiAgICB2aXM9MDsKICAgIGludCBub2RlcyA9IF9fYnVpbHRpbl9wb3Bjb3VudCh4KTsKICAgIGludCBlZGdlcyA9IHk7CiAgICBpbnQgc3RhcnQ7CiAgICBpZihub2Rlcy0xICE9IGVkZ2VzKSAgICByZXR1cm4gZmFsc2U7CiAgICBmb3IoaW50IGo9MDtqPG47aisrKXsKICAgICAgICBpZigoMTw8aikgJiB4KXsKICAgICAgICAgICAgc3RhcnQ9ajsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgZGZzMihzdGFydCxzdGFydCk7CiAgICBpZih2aXMgPT0gbm9kZXMpICAgIHJldHVybiB0cnVlOwogICAgZWxzZSAgICByZXR1cm4gZmFsc2U7Cn0Kdm9pZCBkZnMoaW50IHgsaW50IHApewogICAgZGVwW3hdID0gZGVwW3BdICsgMTsKICAgIGZvcihhdXRvIGl0IDogZ1t4XSl7CiAgICAgICAgaWYoaXQgIT0gcCl7CiAgICAgICAgICAgIGRmcyhpdCwgeCk7CiAgICAgICAgfQogICAgfQp9CmludCBtYWluKCkgewogICAgaW50IG47CiAgICBjaW4+Pm47CiAgICBpbnQgdVtuXSx2W25dOwogICAgZm9yKGludCBpPTA7aTxuLTE7aSsrKXsKICAgICAgICAKICAgICAgICBjaW4+PnVbaV0+PnZbaV07CiAgICAgICAgdVtpXS0tO3ZbaV0tLTsKICAgIH0KICAgIGZvcihpbnQgaT0xO2k8KDE8PG4pO2krKyl7CiAgICAgICAgZm9yKGludCBqPTA7ajw9bjtqKyspCiAgICAgICAgICAgIGdbal0uY2xlYXIoKTsKICAgICAgICBpbnQgY250PTAsc3Q9LTE7CiAgICAgICAgZm9yKGludCBqPTA7ajxuLTE7aisrKXsKICAgICAgICAgICAgaW50IHg9dVtqXTsKICAgICAgICAgICAgaW50IHk9dltqXTsKICAgICAgICAgICAgaWYoKDE8PHgpICYgaSl7CiAgICAgICAgICAgICAgICBpZigoMTw8eSkgJiBpKXsKICAgICAgICAgICAgICAgICAgICBjbnQrKzsKICAgICAgICAgICAgICAgICAgICBnW3hdLnB1c2hfYmFjayh5KTsKICAgICAgICAgICAgICAgICAgICBnW3ldLnB1c2hfYmFjayh4KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZighaXN0cmVlKG4saSxjbnQpKSAgIGNvbnRpbnVlOwogICAgICAgIGludCBtYXh4ID0gMDsKICAgICAgICBpbnQgbm9kZSA9IDA7CiAgICAgICAgbWVtc2V0KGRlcCwwLHNpemVvZihkZXApKTsKICAgICAgICBpbnQgc3RhcnQ7CiAgICAgICAgZm9yKGludCBqPTA7ajxuO2orKyl7CiAgICAgICAgICAgIGlmKCgxPDxqKSAmIGkpewogICAgICAgICAgICAgICAgc3RhcnQ9ajsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGRmcyhzdGFydCxzdGFydCk7CiAgICAgICAgZm9yKGludCBqPTA7ajxuO2orKyl7CiAgICAgICAgICAgIGlmKGRlcFtqXSA+IG1heHgpewogICAgICAgICAgICAgICAgbWF4eCA9IGRlcFtqXTsKICAgICAgICAgICAgICAgIG5vZGUgPSBqOwoKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBtZW1zZXQoZGVwLDAsc2l6ZW9mKGRlcCkpOwogICAgICAgIGRmcyhub2RlLG5vZGUpOwogICAgICAgIG1heHggPSAwOwogICAgICAgIGZvcihpbnQgaj0wO2o8bjtqKyspewogICAgICAgICAgICBpZihkZXBbal0gPiBtYXh4KXsKICAgICAgICAgICAgICAgIG1heHggPSBkZXBbal07CiAgICAgICAgICAgICAgICBub2RlID0gajsKCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZGlhW21heHgtMV0rKzsKICAgIH0KICAgIGZvcihpbnQgaT0xO2k8PW4tMTtpKyspCiAgICAgICAgY291dDw8ZGlhW2ldPDwiXG4iOwogICAgcmV0dXJuIDA7Cn0=