#include<bits/stdc++.h>
#define PB push_back
#define SZ(x) ((int)(x).size())
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
using namespace std;
typedef vector<int>VI;
const int N=200005;
int n,ans[N],num[N];
int pp,lnk[N],nxt[N*2],to[N*2];
void ae(int k1,int k2){to[++pp]=k2,nxt[pp]=lnk[k1],lnk[k1]=pp;}
int get(int k1,int k2,int k3){
	if(k1>k3)return 0;
	int res=1;
	for(int i=lnk[k1];i;i=nxt[i])if(to[i]!=k2)res+=get(to[i],k1,k3);
	return res;
}
void dfs(int k1,int k2,int k3,int k4){
	if(k1==1){
		for(int i=lnk[k1];i;i=nxt[i])if(to[i]!=k2){
			dfs(to[i],k1,k3,k4);
		}
		return;
	}
	if(k1>k3){
		if(k3>0){
			int sum=0;
			for(int i=lnk[k1];i;i=nxt[i])if(to[i]!=k2){
				int t=get(to[i],k1,k3);
				num[to[i]]=-t;
				sum+=t;
			}
			ans[k1]=k4+sum+1;
		}else ans[k1]=1;
		for(int i=lnk[k1];i;i=nxt[i])if(to[i]!=k2){
			int t=get(to[i],k1,k1);
			num[to[i]]+=t;
		}
		for(int i=lnk[k1];i;i=nxt[i])if(to[i]!=k2)dfs(to[i],k1,k1,ans[k1]+num[to[i]]);
	}else{
		ans[k1]=k4;
		for(int i=lnk[k1];i;i=nxt[i])if(to[i]!=k2)dfs(to[i],k1,k3,k4);
	}
}
int main(){
	scanf("%d",&n);
	rep(i,1,n-1){
		int k1,k2;scanf("%d%d",&k1,&k2);
		ae(k1,k2),ae(k2,k1);
	}
	dfs(1,0,0,0);
	rep(i,2,n)printf("%d ",ans[i]);
	return 0;
}