#include<bits/stdc++.h>
using namespace std;
#define ii pair<int,int>
#define fir first
#define sec second
#define pb push_back
#pragma GCC optimize("O3,unroll-loops")
const int maxn=2e5;
int n;
vector<int>adj[maxn+2];
int sub[maxn+2];
int dep[maxn+2],bin[maxn+2][20];
vector<int>isi[maxn+2];
void dfs(int cur,int par){
sub[cur]=1; dep[cur]=dep[par]+1;
bin[cur][0]=par;
for(auto x : adj[cur]){
if(x==par)continue;
dfs(x,cur);
sub[cur]+=sub[x];
}
isi[sub[cur]].push_back(cur);
}
ii apa={1e9,1e9};
int centro(int cur,int par,int sz){
int mx=0;
for(auto x : adj[cur]){
if(x==par)continue;
centro(x,cur,sz);
mx=max(mx,sub[x]);
}
mx=max(mx,sz-sub[cur]);
if(apa.first>mx){
apa.first=mx,apa.second=cur;
}
return cur;
}
int lca(int u,int v){
if(dep[u]<dep[v])swap(u,v);
int slsh=dep[u]-dep[v];
for(int q=19;q>=0;q--){
if((slsh>>q)&1){
u=bin[u][q];
}
}
if(u==v)return u;
for(int q=19;q>=0;q--){
if(bin[u][q]!=bin[v][q]){
u=bin[u][q],v=bin[v][q];
}
}
return bin[u][0];
}
int dist(int u,int v){
return dep[u]+dep[v]-2*dep[lca(u,v)];
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n;
for(int q=1;q<n;q++){
int u,v;
cin>>u>>v;
adj[u].push_back(v); adj[v].push_back(u);
}
dfs(1,0);
apa={1e9,1e9};
centro(1,0,n);
int root=apa.second;
for(int q=0;q<=n;q++)isi[q].clear();
dfs(root,0);
for(int q=1;q<20;q++){
for(int w=1;w<=n;w++){
bin[w][q]=bin[bin[w][q-1]][q-1];
}
}
int l=root,r=root;
int ans[n+1];
int mx=1;
// cout<<root<<endl;
for(int q=n/2;q>=1;q--){
for(auto x : isi[q]){
int a=dist(l,x)+1,b=dist(r,x)+1;
if(a<b){
if(mx<b){
mx=b; l=x;
}
}
else{
if(mx<a){
mx=a,r=x;
}
}
}
ans[q]=mx;
}
for(int q=1;q<=n;q++){
if(q%2==1){
cout<<1<<endl;
}
else{
cout<<ans[q/2]<<endl;
}
}
}