/*************************************************************************
> File Name: 524.cpp
> Author: ma6174
> Mail: ma6174@163.com
> Created Time: 2015年11月25日 星期三 10时59分14秒
************************************************************************/
#include<stdio.h>
#include<algorithm>
#include<math.h>
#include<iostream>
using namespace std;
#define maxn 50
int n,A[maxn]={1},ispe[maxn],vis[maxn];
void dfs(int cur){
if(cur==n&&ispe[A[0]+A[n-1]]){
for(int i=0;i<n;i++)
i?printf(" %d",A[i]):printf("%d",A[i]);
printf("\n");
}
else for(int i=2;i<=n;i++){
if(!vis[i]&&ispe[i+A[cur-1]]){
A[cur]=i;
vis[i]=1;
dfs(cur+1);
vis[i]=0;
}
}
}
int main(){
for(int i=2;i<=50;i++)
ispe[i]=1;
for(int i=2;i<=50;i++)
for(int j=i+i;j+i<=50;j+=i)
ispe[j]=0;
int kase=0;
while(cin>>n){
if(kase++)
printf("\n");
printf("Case %d:\n",kase);
dfs(1);
}
return 0;
}