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 }