524

#include <iostream>
#include <stdio.h>


using namespace std;


int prime[40]={0,0,2,3,0,5,0,7,0,0,0,11,
                  0,13,0,0,0,17,0,19,0,0,
                  0,23,0,0,0,0,0,29,0,31,0,
                  0,0,0,0,37,0,0};
bool visit[17];
int numbers[17];
int n;

int search(int step)
{
	if(step==n)
	{
		if(prime[1+numbers[step-1]])
		{
			for(int i=0;i<n;i++)
			cout<<numbers[i]<<((i==(n-1))?"\n":" ");
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(prime[numbers[step-1]+i] && !visit[i])
		{
			visit[i]=1;
			numbers[step]=i;
			search(step+1);
			visit[i]=0;
		}
	}
}

int main()
{
	int kase=1;
	int c=0;
	while(cin>>n)
	{
		if(c)
		cout<<"\n";
		c=1;
		cout<<"Case "<<kase++<<":\n";
		numbers[0]=1;
		visit[1]=1;
		search(1);

	}

	return 0;
}

 

Leave a Reply

Your email address will not be published. Required fields are marked *