#include<stdio.h> #include<string.h> #include<math.h> #define Max 41 bool prime[Max]; int ans[Max]; bool flag[Max]; int n; void Myprime() { int i,j; memset(prime,true,sizeof(prime)); prime[2]=true; for(i=2;i<sqrt(Max+0.1);i++) { if(prime[i]) { for(j=2;i*j<Max;j++) prime[i*j]=false; } } //for(i=2;i<Max;i++) //if(prime[i]) //printf("%d ",i); } void Dfs(int i) { int j; if(i==n&&prime[ans[0]+ans[n-1]]) { for(j=0;j<n-1;j++) printf("%d ",ans[j]); printf("%d ",ans[n-1]); } else { for(j=2;j<=n;j++) { if(flag[j]&&prime[j+ans[i-1]]) { flag[j]=false; ans[i]=j; Dfs(i+1); flag[j]=true; } else continue; } } } int main() { int i=1; Myprime(); while(scanf("%d",&n)!=EOF) { memset(ans,0,sizeof(ans)); ans[0]=1; memset(flag,true,sizeof(flag)); printf("Case %d: ",i++); Dfs(1); printf(" "); } return 0; }