func_code_string: #include<bits/stdc++.h>   using namespace std;   const int N=1e5+5;   int tot;   int head[N],to[N*2],next1[N*2];   void lian(int x,int y)   {       to[++tot]=y;       next1[tot]=head[x];       head[x]=tot;   }   int d[N],k;   struct qw{       int a,b,c,d;   }e[N];   struct er{       int a,b;   }jie[N];   void dfs(int x,int fa)   {       jie[x].a=x,jie[x].b=0;       for(int i=head[x];i;i=next1[i])       {           int v=to[i];           if(v==fa) continue;           d[x]++;           dfs(v,x);       }       if(d[x]==0) return;       int v1=-1;       for(int i=head[x];i;i=next1[i])       {           int v=to[i];           if(v==fa) continue;           if(jie[v].b==0)           {               if(v1==-1) jie[x].a=jie[v].a;               else if(jie[x].b==0) jie[x].b=jie[v].a;               else e[++k]=(qw){v,x,v,jie[x].a},jie[x].a=jie[v].a;               v1=0;                          }       }       if(v1==-1)       {           for(int i=head[x];i;i=next1[i])           {               int v=to[i];               if(v==fa) continue;               v1=v;               e[++k]=(qw){v,x,x,jie[v].a};               jie[x].a=jie[v].b;               break;           }       }       for(int i=head[x];i;i=next1[i])       {           int v=to[i];           if(v==fa||jie[v].b==0||v==v1) continue;           if(jie[v].a&&jie[v].b) e[++k]=(qw){v,x,jie[v].a,jie[x].a},jie[x].a=jie[v].b;           else e[++k]=(qw){v,x,jie[x].a,v},jie[x].a=jie[v].a;       }   }   int main()   {       int T;       cin>>T;       while(T--)       {           int n;           cin>>n;           int x,y;           for(int i=1;i<=n-1;i++)           {               scanf( %d %d ,&x,&y);               lian(x,y),lian(y,x);           }           k=0;           dfs(1,0);           printf( %d n ,k);           for(int i=1;i<=k;i++)           printf( %d %d %d %d n ,e[i].a,e[i].b,e[i].c,e[i].d);           tot=0;           for(int i=1;i<=n;i++) head[i]=d[i]=0;       }       return 0;   }   