#include<bits/stdc++.h>
using namespace std;
int n,path[20],cnt=1;
int vis[20];
bool isprime(int x){
for(int i = 2;i<=sqrt(x);i++){
if(x%i==0) return 0;
}
return 1;
}
void dfs(int x){
if(x==n && isprime(path[n-1]+path[0])){
for(int i = 0;i<n-1;i++){
cout<<path[i]<<" ";
}
cout<<path[n-1]<<endl;
return;
}
for(int i = 2;i<=n;i++){
if(!vis[i] && isprime(i+path[x-1])){
path[x]=i;
vis[i]=1;
dfs(x+1);
vis[i]=0;
}
}
}
int main(){
while(cin>>n){
memset(vis,false,sizeof(vis));
cout<<"Case "<<cnt++<<":"<<endl;
path[0] = 1;
vis[1] = 1;
dfs(1);
cout<<endl;
}
return 0;
}
样例过了