1 #include <stdio.h>
2 #include <string.h>
3
4 #define M 21
5
6 int id[M],jud[M],n;
7
8 int is_prime(int n)
9 {
10 for(int i=2;i*i<=n;i++)
11 if(n%i==0) return 0;
12 return 1;
13 }
14
15 void show()
16 {
17 if(!is_prime(id[1]+id[n])) return ;
18 for(int i=1;i<=n;i++)
19 if(i!=n) printf("%d ",id[i]);
20 else printf("%d",id[i]);
21 printf("\n");
22 }
23
24 void dfs(int m,int cr)
25 {
26 if(cr>=n)
27 {
28 show(); return ;
29 }
30 for(int i=1;i<=n;i++)
31 {
32 if(!jud[i] && is_prime(m+i))
33 {
34 id[cr+1]=i;
35 jud[i]=1;
36 dfs(i,cr+1);
37 jud[i]=0;
38 }
39 }
40 }
41
42 int main(int argc, char *argv[])
43 {
44 #ifdef __LOCAL
45 freopen("in.txt","r",stdin);
46 #endif
47 int t=1;
48 while(scanf("%d",&n)!=EOF)
49 {
50 printf("Case %d:\n",t++);
51 memset(jud,0,sizeof(jud));
52 id[1]=jud[1]=1;
53 dfs(1,1);
54 printf("\n");
55 }
56 return 0;
57 }