#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
int c[30],n,flag=false,out[30],ans;
inline void read(int &now)
{
char Cget;now=0;while((Cget=getchar())<'0'&&Cget>'9');
while(Cget>='0'&&Cget<='9')now=now*10+Cget-'0',Cget=getchar();
}
void operation_A()
{
int tmp,tmp2;
tmp=c[1];
c[1]=c[3],c[3]=c[4],c[4]=c[2],c[2]=tmp;
tmp=c[23],tmp2=c[24];
c[23]=c[10],c[24]=c[9],c[9]=c[5],c[10]=c[6];
c[5]=c[13],c[6]=c[14],c[13]=tmp2,c[14]=tmp;
}
void operation_B()
{
int tmp,tmp2;
tmp=c[9];
c[9]=c[11],c[11]=c[12],c[12]=c[10],c[10]=tmp;
tmp=c[1],tmp2=c[3];
c[1]=c[21],c[3]=c[23],c[23]=c[19],c[21]=c[17];
c[19]=c[7],c[17]=c[5],c[7]=tmp2,c[5]=tmp;
}
void operation_C()
{
int tmp=c[5],tmp2;
c[5]=c[7],c[7]=c[8],c[8]=c[6],c[6]=tmp;
tmp=c[17],tmp2=c[18];
c[17]=c[15],c[18]=c[13],c[15]=c[4],c[13]=c[3];
c[3]=c[12],c[4]=c[10],c[10]=tmp,c[12]=tmp2;
}
bool check()
{
return c[1]==c[2]&&c[2]==c[3]&&c[3]==c[4]&&
c[5]==c[6]&&c[6]==c[7]&&c[7]==c[8]&&
c[9]==c[10]&&c[10]==c[11]&&c[11]==c[12]&&
c[13]==c[14]&&c[14]==c[15]&&c[15]==c[16]&&
c[17]==c[18]&&c[18]==c[19]&&c[19]==c[20]&&
c[21]==c[22]&&c[22]==c[23]&&c[23]==c[24];
}
void dfs(int now,int last)
{
if(check())
{
flag=true,ans=now;
return;
}
if(now>=n) return;
if(last!=1)
{
for(int i=1;i<=3;i++)
{
operation_A();
out[now+1]=i;
dfs(now+1,1);
if(flag) return;
}
operation_A();
}
if(last!=2)
{
for(int i=1;i<=3;i++)
{
operation_B();
out[now+1]=3+i;
dfs(now+1,2);
if(flag) return;
}
operation_B();
}
if(last!=3)
{
for(int i=1;i<=3;i++)
{
operation_C();
out[now+1]=6+i;
dfs(now+1,3);
if(flag) return;
}
operation_C();
}
}
void dfs2(int now,int last)
{
if(check())
{
flag=true,ans=now;
return;
}
if(now>=n) return;
if(last!=1)
{
for(int i=1;i<=3;i++)
{
operation_A();
out[now+1]=i;
dfs(now+1,1);
if(flag) return;
}
operation_A();
}
if(last!=2)
{
for(int i=1;i<=3;i++)
{
operation_B();
out[now+1]=3+i;
dfs(now+1,2);
if(flag) return;
}
operation_B();
}
}
int main()
{
freopen("cube.in","r",stdin);
freopen("cube.out","w",stdout);
read(n);
for(int i=1;i<=24;i++) read(c[i]);
if(n<=3)
{
dfs(0,0);
for(int i=1;i<=ans;i++) printf("%d ",out[i]);
}
else
{
if(n<=6) dfs2(0,0);
if(!flag) dfs(0,0);
for(int i=1;i<=ans;i++) printf("%d ",out[i]);
}
fclose(stdin),fclose(stdout);
return 0;
}