#include<bits/stdc++.h>
using namespace std;
#define SET(a) memset(a,-1,sizeof(a))
#define CLR(a) memset(a,0,sizeof(a))
#define PI acos(-1.0)
#define MOD 1000000007
#define MX 100010
int ring[20], n;
bool isPrime[33], taken[20];
void print()
{
cout<<ring[1];
for(int i=2;i<=n;i++)
cout<<" "<<ring[i];
cout<<"\n";
return;
}
void backTrack(int tot, int lst)
{
if(tot==n)
{
if(isPrime[lst+1])
print();
return;
}
for(int i=2;i<=n;i++)
if(!taken[i])
if(isPrime[lst+i])
{
taken[i]=1;
ring[tot+1]=i;
backTrack(tot+1, i);
taken[i]=0;
}
return;
}
int main()
{
ios_base::sync_with_stdio(0);cin.tie(0);
int kk=1, tc, m;
string s;
isPrime[2]=isPrime[3]=isPrime[5]=isPrime[7]=isPrime[11]=isPrime[13]=isPrime[17]=isPrime[19]=isPrime[23]=isPrime[29]=isPrime[31]=1;
while(cin>>n)
{
CLR(taken);
CLR(ring);
ring[1]=taken[1]=1;
if(kk>1) cout<<"\n";
cout<<"Case "<<kk++<<":\n";
backTrack(1, 1);
}
return 0;
}
No comments:
Post a Comment