#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
struct Edge{
	int v,nxt;
}e[400010];int tot;
int first[200010];
void build(int u,int v)
{
	e[++tot]=(Edge){v,first[u]};
	first[u]=tot;
	return ;
}
int f[200010],g[200010];
int work(int u,int lst,int lim)
{
	if(u>lim)return 0;
	int sz=1;
	for(int i=first[u];i;i=e[i].nxt)
		if(e[i].v!=lst)sz+=work(e[i].v,u,lim);
	return sz;
}
bool vis[200010];
void dfs(int u,int lst,int pre)
{
	if(u>pre)vis[u]=true;
	if(!vis[u]){
		if(!vis[lst])f[u]=f[lst];
		else f[u]=f[lst]+work(u,lst,pre)-g[u];
	}
	else{
		f[u]=f[lst]+1;
		for(int i=first[u];i;i=e[i].nxt)
			if(e[i].v!=lst)f[u]+=(g[e[i].v]=work(e[i].v,u,pre));
	}
	for(int i=first[u];i;i=e[i].nxt)
		if(e[i].v!=lst)dfs(e[i].v,u,max(pre,u));
	return ;
}
int main()
{
	int n;scanf("%d",&n);
	for(int i=1;i<n;i++)
	{
		int u,v;
		scanf("%d %d",&u,&v);
		build(u,v);
		build(v,u);
	}
	dfs(1,0,0);
	for(int i=2;i<=n;i++)
		printf("%d ",f[i]-1);
	printf("\n");
	return 0;
}