/* 又贴一水到不得了的水题,菜到不得了,只能刷水题了,没办法。不过个人觉得这个题,考了一种数据结构,邻接表 ,不过太简单了,暴力就过了 */
#include < iostream >
#include < string >
#include < algorithm>
#include < cstdio >
#define N 21
#define inf 0x3f3f3f3f
using namespace std;
struct node
{
int rr[23];
}r[N*N];
int a[N][4],v[N],w[N],b1,s;
int cmp(node x,node y)
{
int f=0;
for(int i=1 ; i<=N ; i++)
{
if(x.rr[i]==y.rr[i]) continue;
else if(x.rr[i]>y.rr[i]) return 0;
else return 1;
}
}
void deal()
{
char x;
int i,k=0;
for(i=1 ; i<=N ; i++)
r[b1].rr[i]=w[i];
b1++;
}
void dfs(int s,int k)
{
int i,j;
if(k>N && s==w[1])
{
deal();
return;
}
for(j=0 ; j<3 ; j++)
{
if(!v[a[s][j]])
{
w[k]=a[s][j];
v[w[k]]=1;
dfs(w[k],k+1);
v[w[k]]=0;
}
}
}
int main ()
{
//freopen("t.txt","r",stdin);
int i,j,k,t=0;
while(1)
{
k=1;
memset(v,0,sizeof(v));
for(b1=i=0 ; i<20 ; i++,k++)
{
j=0;
int x,y,z;
cin>>x>>y>>z;
a[k][j++]=x;
a[k][j++]=y;
a[k][j++]=z;
}
while(cin>>s)
{
b1=0;
if(s==0) break;
w[1]=s;
dfs(s,2);
sort(r,r+b1,cmp);
for(t=i=0 ; i<b1 ; i++)
{
cout<<++t<<": ";
for(j=1 ; j<22 ; j++)
{
if(j!=N)
cout<<r[i].rr[j]<<' ';
else cout<<r[i].rr[j]<<endl;
}
}
}
if(s==0) break;
}
return 0;
}