#include<bits/stdc++.h>
using namespace std;
const long long mod=1e9+7,INF=1e18;
#define ll long long 
#define line cout<<"\n";
#define flush cout<<endl;
#define pll pair<ll,ll>
#define x first
#define y second
#define p_all(arr) for(auto i:arr){cout<<i<<" ";}cout<<"\n";
vector<vector<ll> > tree;
vector<pair<pll,pll> > ans;
pll dfs(ll u,ll pa)
{
    vector<pll> temp;
    vector<ll> val;
    pll temp2;
    for(auto v:tree[u])
    {
        if(v!=pa)
        {
            temp2=dfs(v,u);
            val.push_back(v);
            temp.push_back(temp2);
        }
    }
    ll idx=-1;
    temp2={u,-1};
    if(temp.size()==0)
    return temp2;
    for(int i=0;i<temp.size();i++)
    {
        if(temp[i].y==-1)
        {
            idx=i;
            temp2=temp[i];
        }
    }
    if(idx==-1)
    {
        for(int i=0;i<temp.size();i++)
        {
            ans.push_back({{u,val[i]},{temp2.x,temp[i].x}});
            temp2={temp[i].y,-1};
        }
    }
    else
    {
        ll flag=-1;
        for(int i=0;i<temp.size();i++)
        if(i!=idx)
        {
            if(temp[i].y==-1)
            {
                if(flag==-1)
                {
                    flag=i;
                    continue;
                }
                ans.push_back({{u,val[i]},{temp2.x,val[i]}});
                temp2={temp[i].x,-1};
            }
            else
            {
                ans.push_back({{u,val[i]},{temp2.x,temp[i].x}});
                temp2={temp[i].y,-1};
            }
        }
        if(flag!=-1)
        {
            temp2={temp2.x,temp[flag].x};
        }
    }
    return temp2;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);cout.tie(NULL);
    ll t=1;
    cin>>t;
    for(ll test=1;test<=t;test++)
    {
        ll n;
        cin>>n;
        vector<vector<ll> > tree1;
        vector<pair<pll,pll> > ans1;
        ans=ans1;
        tree=tree1;
        tree.resize(n);
        ll u,v;
        for(int i=0;i<n-1;i++)
        {
            cin>>u>>v;
            u--,v--;
            tree[u].push_back(v);
            tree[v].push_back(u);
        }
        pll temp=dfs(0,-1);
        cout<<ans.size()<<"\n";
        for(int i=0;i<ans.size();i++)
        {
            cout<<ans[i].x.x+1<<" "<<ans[i].x.y+1<<" "<<ans[i].y.x+1<<" "<<ans[i].y.y+1<<"\n";
        }
    }
    return 0;
}
