#include<cstdio>
#include<cstring>
using namespace std;
int n;
int a[21];
int su[101];
int visit[200];
void DFS(int c)
{
a[0]=1;// 初始为1
if(c==n&&!su[a[0]+a[n-1]])// 如果 c==n 则结束 如果 第一个与最后一个和也为素数 则 输出
{
for(int i=0; i<n-1; i++)
printf("%d ",a[i]);
printf("%d",a[n-1]);
printf("\n");
}
else
{
for(int i=2; i<=n; i++)
if(!visit[i]&&!su[i+a[c-1]])// 如果 次数 与前一个数相加为素数 且没被拜访过 则 赋值
{
a[c]=i;
//printf("%d ",a[c]);
visit[i]=1;// 标记
DFS(c+1);// 继续查找下一行
visit[i]=0;//回溯
}
}
}
int main()
{
int t=1;
for(int i=2; i<9; i++)
for(int j=i*i; j<50; j+=i)
su[j]=1;//赋值 1-50 内的非素数为1
while(scanf("%d",&n)!=EOF)
{
printf("Case %d:\n",t++);
memset(visit,0,sizeof(visit));
DFS(1);
printf("\n");
}
return 0;
}