码风极丑,请不要在意
#include<bits/stdc++.h>
using namespace std;
int b[20],a[35],n,r,i,s,cnt;
bool pd(int n)
{
if(n<2)return 0;
for(int i=2;i*i<=n;i++)
if(n%i==0)return 0;
return 1;
}
void dfs(int x)
{
int i;
if(x>n){
if(!pd(a[1]+a[n]))return;
cout<<1;
for(i=2;i<=n;i++)cout<<' '<<a[i];
puts("");
return;
}
for(i=2;i<=n;i++)
if(!b[i]&&pd(i+a[x-1])){
b[i]=1;
a[x]=i;
dfs(x+1);
b[i]=0;
}
}
int main()
{
while(cin>>n&&n!=EOF){
memset(b,0,sizeof b);
memset(a,0,sizeof a);
cout<<"Case "<<++s<<":\n";
a[1]=b[1]=1;
if(n==2){
cout<<"1 2\n";
puts("");
continue;
}
dfs(2);
puts("");
}
//puts("");
return 0;
}