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

#define ll long long
#define pii pair<int, int>
#define pll pair<ll, ll>
#define vi vector<int>
#define vll vector<ll>
#define vpii vector<pair<int,int>>
#define vpll vector<pair<ll,ll>>
#define fr(i,k,n) for (int i = k; i < n; ++i)
#define fri(i,k,n) for (int i = k; i >= n; --i)
#define pb push_back
#define mp make_pair
#define all(arr) arr.begin(),arr.end()
#define ff first
#define ss second
#define endl '\n'

const double pi=3.1415926535897932384626433832795;
const int inf=1e9;
const ll inf2=1e18;
const int mod=1e9+7;

void boost(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
}

const int N=1e5+5;
set<int> adj[N];
vpii rem,add;
vector<bool> vis(N,false);
int e1,e2;

void dfs(int u,int p){
    vi temp;
    for(auto v: adj[u])
        if(v!=p)
            temp.pb(v);
    for(auto v: temp){
        if(v!=p){
            dfs(v,u);
        }
    }
    if(int(adj[u].size())>2){
        if(p!=0 && (int)(adj[p].size())>2){
            adj[p].erase(u);
            adj[u].erase(p);
            rem.pb({p,u});
        }
        temp.clear();
        for(auto v: adj[u])
            if(v!=p)
                temp.pb(v);
        for(auto v: temp){
            if(int(adj[u].size())<=2)
                break;
            if(v==p)
                continue;
            adj[v].erase(u);
            adj[u].erase(v);
            rem.pb({v,u});
        }
    }
}

void dfs2(int u,int p){
    vis[u]=true;
    if(int(adj[u].size())<=1){
        if(e1!=-1)
            e2=u;
        else
            e1=e2=u;
    }
    for(auto v: adj[u]){
        if(v!=p)
            dfs2(v,u);
    }
}

void solve(){
    int n;
    cin>>n;
    int u,v;
    fr(i,0,n-1){
        cin>>u>>v;
        adj[u].insert(v);
        adj[v].insert(u);
    }
    dfs(1,0);
    int r=-1;
    fr(i,1,n+1){
        if(!vis[i]){
            e1=e2=-1;
            dfs2(i,0);
            if(r==-1){
                r=e1;
                continue;
            }
            add.pb({e1,r});
            r=e2;
        }
    }
    int m=add.size();
    cout<<m<<endl;
    for(int i=0;i<m;i++){
        cout<<rem[i].ff<<" "<<rem[i].ss<<" "<<add[i].ff<<" "<<add[i].ss<<endl;
    }
    fr(i,1,n+1){
        adj[i].clear();
        vis[i]=false;
    }
    rem.clear();
    add.clear();
    return;
}

int main()
{
    boost();
    
    int tc=1;
    cin>>tc;
    while(tc--)
        solve();
    return 0;
}   