#include<stdio.h> #include<string.h> #include<math.h> int n,a[20],v[21]; int prime(int m) { int i; for(i=2;i<=sqrt(m);i++) if(m%i==0) break; if(i<=sqrt(m)) return 0; return 1; } void dfs(int r) { int i,j; if(r==n) { if(prime(a[r-1]+1)) { for(j=0;j<n;j++) printf(j==n-1?"%d\n":"%d ",a[j]); } return; } for(i=2;i<=n;i++) { if(!v[i]&&prime(a[r-1]+i)) { v[i]=1; a[r]=i; dfs(r+1); v[i]=0; } } } int main() { int c=0; while(scanf("%d",&n)!=EOF) { printf("Case %d:\n",++c); if(n%2==0) { memset(v,0,sizeof(v)); a[0]=v[1]=1; dfs(1); } puts(""); } return 0; } /************************************************************** Problem: 2128 User: admin Language: C++ Result: Accepted Time:11 ms Memory:1144 kb ****************************************************************/