#include<bits/stdc++.h>
using namespace std;

int ma[200010],f[18][200010],g[18][200010],x,y,hd[200010],cnt,ans[200010],fa[200010],n;
struct node{int to,next;}e[400010];

void addedge(int x,int y)
{
	e[++cnt]=(node){y,hd[x]},hd[x]=cnt;
	e[++cnt]=(node){x,hd[y]},hd[y]=cnt;
}

void dfs(int x)
{
	ma[x]=max(ma[fa[x]],x);
	for (int i=hd[x]; i; i=e[i].next)
		if (e[i].to!=fa[x]) fa[e[i].to]=x,dfs(e[i].to);
}

void Dfs(int x)
{
	for (int i=hd[x]; i; i=e[i].next)
		if (e[i].to!=fa[x]) ans[e[i].to]+=ans[x],Dfs(e[i].to);
}

int main()
{
	scanf("%d",&n);
	for (int i=1; i<n; i++) scanf("%d%d",&x,&y),addedge(x,y);
	ma[0]=fa[1]=0,dfs(1);
	for (int i=1; i<=n; i++) f[0][i]=fa[i],g[0][i]=i;
	for (int j=1; j<=17; j++)
		for (int i=1; i<=n; i++)
			f[j][i]=f[j-1][f[j-1][i]],g[j][i]=max(g[j-1][i],g[j-1][f[j-1][i]]);
	for (int i=2; i<=n; i++)
	{
		int x=i,nw=0;
		for (int j=17; j>=0; j--)
			if (f[j][x]>1&&max(nw,g[j][x])<ma[fa[f[j][x]]]) nw=max(nw,g[j][x]),x=f[j][x];
		ans[x]++;
	}
	Dfs(1);
	for (int i=2; i<=n; i++) printf("%d ",ans[i]);
	return puts(""),0;
}