//0 KB 285 ms
#include
#include
const int VM = 55;
int vis[VM],mat[VM][VM];
void DFS(int u)
{
vis[u] = 1;
for (int v = 0; v < VM; v ++)
{
if (mat[u][v]&&!vis[v])
DFS(v);
}
}
void euler(int u) //输出欧拉回路
{
for (int v = 0; v < VM; v ++)
{
if (mat[u][v])
{
-- mat[u][v];
-- mat[v][u];
euler(v);
printf ("%d %d\n",v,u);//反过来输出
}
}
return ;
}
int main ()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
int T,n,cnt = 0,src;
int u,v,i;
int deg[VM]; //每个点的度
scanf ("%d",&T);
while (T --)
{
memset (deg,0,sizeof(deg));
memset (mat,0,sizeof(mat));
scanf ("%d",&n);
for (i = 0; i < n; i ++)
{
scanf ("%d %d",&u,&v);
mat[u][v] ++; //有重边
mat[v][u] ++;
deg[u] ++;
deg[v] ++;
}
src = u;
printf ("Case #%d\n",++cnt);
bool f1 = true,f2 = true;
for (i = 0; i < VM; i ++) //是否为欧拉图
if (deg[i]&1)
{
f1 = false;
break;
}
if (f1)
{
memset (vis,0,sizeof(vis));
DFS(src);
for (i = 0; i < VM; i ++) //是否连通
if (deg[i]&&!vis[i])
{
f2 = false;
break;
}
if (f2)
euler(src);
else printf ("some beads may be lost\n");
}
else printf ("some beads may be lost\n");
printf ("\n");
}
return 0;
}