#include<stdio.h>
#include<string.h>
int n;
int isp[45];
int cir[22];
int vis[22];
void is_prime()
{
int i,j;
for(i = 2;i <= 40;i ++)
{
for(j = 2;j <= i/2;j ++)
if(i%j==0)
isp[i] = 1;
}
return ;
}
void dfs(int cnt)
{
int i,j;
if(cnt == n && !isp[cir[0]+cir[n-1]])
{
for(j = 0;j < n-1;j ++)
printf("%d ",cir[j]);
printf("%d\n",cir[n-1]);
}
else
{
for(i = 2;i <= n;i ++)
{
if(!vis[i]&&!isp[i+cir[cnt-1]])
{
cir[cnt] = i;
vis[i] = 1;
dfs(cnt+1);
vis[i] = 0;
}
}
}
}
int main()
{
int i,c = 0;
is_prime();
while(~scanf("%d",&n))
{
memset(vis,0,sizeof(vis));
c++;
printf("Case %d:\n",c);
for(i = 0;i < n;i ++)
cir[i] = i+1;
dfs(1);
printf("\n");
}
return 0;
}
#include<stdio.h>
#include<string.h>
int n;
int isp[45];
int cir[22];
int vis[22];
void is_prime()
{
int i,j;
for(i = 2;i <= 40;i ++)
{
for(j = 2;j <= i/2;j ++)
if(i%j==0)
isp[i] = 1;
}
return ;
}
void dfs(int cnt)
{
int i,j;
if(cnt == n && !isp[cir[0]+cir[n-1]])
{
for(j = 0;j < n-1;j ++)
printf("%d ",cir[j]);
printf("%d\n",cir[n-1]);
}
else
{
for(i = 2;i <= n;i ++)
{
if(!vis[i]&&!isp[i+cir[cnt-1]])
{
cir[cnt] = i;
vis[i] = 1;
dfs(cnt+1);
vis[i] = 0;
}
}
}
}
int main()
{
int i,c = 0;
is_prime();
while(~scanf("%d",&n))
{
memset(vis,0,sizeof(vis));
c++;
printf("Case %d:\n",c);
for(i = 0;i < n;i ++)
cir[i] = i+1;
dfs(1);
printf("\n");
}
return 0;
}