#include<bits/stdc++.h>   #include<string.h>   #define int long long   #include<vector>   #define rep(i,a,b)        for(int i=a;i<b;i++)   #define pb                push_back   #define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);   using namespace std;   const int N=2e5+5;       vector<int> v[N];   int siz[N];   int lvl[N];       int forefather[N];       int tim = 0, st[N], et[N];       void dfs(int z,int p = -1,int ff = 0){    if(p == -1) lvl[z] = 0;    else lvl[z] = lvl[p] + 1;        if(lvl[z] == 1) ff = z;    forefather[z] = ff;        st[z] = tim++;        siz[z] = 1;    for(int x:v[z]){     if(x == p) continue;     dfs(x,z,ff);     siz[z] += siz[x];    }    et[z] = tim;   }       // x is ancestor of y   bool ancestor(int x,int y){    if(st[y] > st[x] && et[y] <= et[x]){     return true;    }    return false;   }       int calc(int x,int y){    if(y == 0) swap(x,y);    if(x == 0){     return siz[y] * (siz[0] - siz[forefather[y]]);    }    return siz[x] * siz[y];   }       void solve(){    tim = 0;    int n;    cin >> n;    rep(i,0,n){     v[i].clear();     siz[i] = 0;     lvl[i] = 0;     forefather[i] = 0;    }    rep(i,1,n){     int x,y;     cin >> x >> y;     v[x].pb(y);     v[y].pb(x);    }        dfs(0);        int paths = n * (n - 1) / 2;    int donthavezero = 0;    rep(i,1,n){     if(lvl[i] != 1) continue;     donthavezero += siz[i] * (siz[i] - 1) / 2;    }    cout << donthavezero <<    ;    paths -= donthavezero;        int a = 0, b = 0;        rep(i,1,n){     if(paths == 0){      cout << 0 <<    ;      continue;     }     if(a == 0) swap(a,b);     if(ancestor(i,a) || ancestor(i,b)){      cout << 0 <<    ;      continue;     }     if(ancestor(a,i)){      a = i;      int wont_work = calc(a,b);      cout << paths - wont_work <<    ;      paths = wont_work;     }     else if(ancestor(b,i)){      if(forefather[i] == forefather[a]){       cout << paths <<    ;       paths = 0;       continue;      }      b = i;      int wont_work = calc(a,b);      cout << paths - wont_work <<    ;      paths = wont_work;     }     else{      cout << paths <<    ;      paths = 0;     }    }        cout << paths;        cout <<   n ;   }   signed main(){    ios_base::sync_with_stdio(false);    cin.tie(0);cout.tie(0);        int t=1;    cin>>t;    while(t--) solve();    return 0;   }