#include<stdio.h>
#include<string.h>
int s[200],e[100][100];
void dfs(int x)
{
int i;
for(i=1;i<=50;i++)
if(e[x][i])
{
e[x][i]--,e[i][x]--;
dfs(i);
printf("%d %d\n",i,x);
}
}
int main()
{
int n,i,k,a,b,t=1;
scanf("%d",&k);
while(k--)
{
scanf("%d",&n);
memset(s,0,sizeof(s));
memset(e,0,sizeof(e));
for(i=1;i<=n;i++)
{
scanf("%d%d",&a,&b);
s[a]++,s[b]++,e[a][b]++,e[b][a]++;
}
int sum=0,f=1;
for(i=1;i<=50;i++)
{
if(s[i]%2)
{
f=0;
break;
}
}
printf("Case #%d\n",t++);
if(!f)
printf("some beads may be lost\n");
else
dfs(a);
if(k)
printf("\n");
}
}
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int s[5000],sum,n,a[5000],book[5000];
struct q
{
int x,y;
}s1[5000];
void dfs(int x)
{
int i;
for(i=1;i<=n;i++)
{
if((s1[i].x==x||s1[i].y==x)&&book[i]==0)
{
book[i]=1;
dfs(s1[i].x+s1[i].y-x);
a[sum++]=i;
}
}
}
int main()
{
int x,y,i,z;
while(~scanf("%d%d",&x,&y))
{
if(x==0&&y==0)
break;
int p=min(x,y);
sum=0;
n=0;
memset(s,0,sizeof(s));
memset(book,0,sizeof(book));
while(1)
{
scanf("%d",&z);
s[x]++;
s[y]++;
s1[z].x=x;
s1[z].y=y;
n=max(n,z);
scanf("%d%d",&x,&y);
if(x==0&&y==0)
break;
}
int f=0;
for(i=1;i<=n;i++)
if(s[i]%2)
{
f=1;
break;
}
if(f)
{
printf("Round trip does not exist.\n");
continue;
}
else
{
dfs(p);
for(i=sum-1;i>=0;i--)
{
if(i!=0)
printf("%d ",a[i]);
else
printf("%d\n",a[i]);
}
}
}
}