#include <stdio.h> #include <string.h> #include <math.h> int n; int vis[200]; int isp[200]; int a[200]; int is_prime[20000]; void dfs(int cur) { if(cur == n&& is_prime[a[0]+a[n-1]]) { for(int i=0;i<n-1;i++) printf("%d ",a[i]); printf("%d",a[n-1]); printf("/n"); } else { for(int i=2;i<=n;i++) if(!vis[i]&&is_prime[i+a[cur-1]]) { a[cur]=i; vis[i]=1; dfs(cur+1); vis[i]=0; } } } int main(void) { memset(vis,0,sizeof(vis)); memset(is_prime,0,sizeof(is_prime)); is_prime[2] = is_prime[3] = is_prime[5] = is_prime[7] = is_prime[11] = is_prime[13] = is_prime[17] = is_prime[19] = is_prime[23] = is_prime[29] = is_prime[31] = is_prime[37] = 1 ; for(int i=0;i<=n;i++) a[i]=i+1; int count = 0; while(scanf("%d",&n)!=EOF) { printf("Case %d:/n",++count); if(n%2==0) dfs(1); printf("/n"); } return 0; }