#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<iostream>
#include<string.h>
#define inf 0x3f3f3f
using namespace std;
int a[21],n;
bool vis[21],b[100];
void bfs(int t , int n)
{
for(int i = 2 ; i <= n ; i++)
{
if(t == n)
{
if(vis[i] == 0 && b[i+1] == 0 && b[i+a[t-1]] == 0)//这里注意,因为是形成环,所以最后一个还要
{ //考虑和第一个的组合
a[t] = i;
for(int i = 1 ; i <= n ; i++)
{
if(i != n)
printf("%d ",a[i]);
else
printf("%d\n",a[i]);
}
}
}
else
{
if(vis[i] == 0 && b[i+a[t-1]] == 0)
{
a[t] = i;
vis[i] = 1;
bfs(t+1,n);
vis[i] = 0;
}
}
}
}
int x;
int main()
{
memset(b,0,sizeof(b));
for(int i = 2 ; i <= 50 ; i++)
{
for(int j = 2 ; j < i ; j++)
{
if(i % j == 0)b[i] = 1;
}
}
x = 1;
while(scanf("%d",&n) != EOF)
{
printf("Case %d:\n",x);
x++;
memset(a,0,sizeof(a));
memset(vis,0,sizeof(vis));
vis[1] = 1;
a[1] = 1;
bfs(2,n);
printf("\n");
}
}
#include<stdlib.h>
#include<math.h>
#include<iostream>
#include<string.h>
#define inf 0x3f3f3f
using namespace std;
int a[21],n;
bool vis[21],b[100];
void bfs(int t , int n)
{
for(int i = 2 ; i <= n ; i++)
{
if(t == n)
{
if(vis[i] == 0 && b[i+1] == 0 && b[i+a[t-1]] == 0)//这里注意,因为是形成环,所以最后一个还要
{ //考虑和第一个的组合
a[t] = i;
for(int i = 1 ; i <= n ; i++)
{
if(i != n)
printf("%d ",a[i]);
else
printf("%d\n",a[i]);
}
}
}
else
{
if(vis[i] == 0 && b[i+a[t-1]] == 0)
{
a[t] = i;
vis[i] = 1;
bfs(t+1,n);
vis[i] = 0;
}
}
}
}
int x;
int main()
{
memset(b,0,sizeof(b));
for(int i = 2 ; i <= 50 ; i++)
{
for(int j = 2 ; j < i ; j++)
{
if(i % j == 0)b[i] = 1;
}
}
x = 1;
while(scanf("%d",&n) != EOF)
{
printf("Case %d:\n",x);
x++;
memset(a,0,sizeof(a));
memset(vis,0,sizeof(vis));
vis[1] = 1;
a[1] = 1;
bfs(2,n);
printf("\n");
}
}