#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <map>
#include <algorithm>
#include <set>
using namespace std;
#define MM(a) memset(a,0,sizeof(a))
typedef long long ll;
typedef unsigned long long ULL;
const int mod = 1000000007;
const double eps = 1e-10;
const int inf = 0x3f3f3f3f;
const int big=50000;
ll max(int a,int b) {return a>b?a:b;};
ll min(int a,int b) {return a<b?a:b;};
int G[505][505],deg[550],f[550];
int cas,n;

int  find_(int i)
{
    if(i!=f[i])
        f[i]=find_(f[i]);
    return f[i];
}

void unite(int i,int j)
{
    int ri=find_(i);
    int rj=find_(j);
    if(ri!=rj)
        f[ri]=rj;
}

void dfs(int u)
{
   for(int v=1;v<=50;v++)
        if(G[u][v]>0)
   {
       G[u][v]--;
       G[v][u]--;
       dfs(v);
       printf("%d %d\n",v,u);
   }
}

void solve()
{
   for(int i=1;i<=50;i++)
     if(deg[i]%2!=0)
   {
       printf("some beads may be lost\n");
       return;
   }

   int root=0;
   for(int i=1;i<=50;i++)
      if(deg[i]&&f[i]==i)
          root++;
   if(root>1)  {
       printf("some beads may be lost\n");
       return;
   }

   for(int u=1;u<=n;u++)  if(deg[u]){dfs(u);return;}
}

int main()
{
    scanf("%d",&cas);
    for(int t=1;t<=cas;t++)
    {
        scanf("%d",&n);
        int x,y;
        for(int i=1;i<=50;i++) f[i]=i;
        memset(G,0,sizeof(G));
        memset(deg,0,sizeof(deg));

        for(int i=1;i<=n;i++)
            {
                scanf("%d %d",&x,&y);
                G[x][y]++;G[y][x]++;
                deg[x]++;deg[y]++;
                unite(x,y);
            }
        if(t!=1) printf("\n");
        printf("Case #%d\n",t);
        solve();
    }
    return 0;
}