#include<bits/stdc++.h>
using namespace std;
int t;
int n;
struct Tree{
map<int,int>mp;int cnt;//子树
int dist;//最前
int answer;//最后
}a[100005];
void dfs(int x,int deep){
a[x].dist=deep;
for(int i=1;i<=a[x].cnt;i++){
dfs(a[x].mp[i],deep+1);
}
}
void dfs1(int x,int root){
a[root].answer-=a[x].cnt;
for(int i=1;i<=a[x].cnt;i++){
dfs1(a[x].mp[i],root);
}
return;
}
int main(){
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(int i=1;i<=n;i++){//初始化
a[i].cnt=0;
}
for(int i=1;i<n;i++){
int x,y;
scanf("%d%d",&x,&y);
a[x].mp[++a[x].cnt]=y;
}
dfs(1,1);
for(int i=1;i<=n;i++){
a[i].answer=n;
dfs1(i,i);
}
for(int i=1;i<=n;i++){
printf("%d %d\n",a[i].dist,a[i].answer);
}
}
return 0;
}//TLE