import java.util.Scanner;
public class Main {
static int cnt;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
int n = in.nextInt();
if (n == 1) {
System.out.println("Case " + ++cnt + ":\n");
continue;
}
init(n);
calc(n);
}
}
private static void init(int n) {
used = new boolean[n];
N = new int[n];
}
private static void calc(int n) {
System.out.println("Case " + ++cnt + ":");
solve(0, n);
System.out.println();
}
static boolean[] used;
static int[] N;
private static void solve(int pos, int n) {
if (pos == n) {
if (valid(N.length - 1)) {
print();
}
return;
}
if (N[0] > 1) return;
for (int i = 0; i < n; i++) {
if (!used[i]) {
N[pos] = i + 1;
if (valid2(pos)) {
used[i] = true;
solve(pos + 1, n);
used[i] = false;
}
}
}
}
private static void print() {
for (int i = 0; i < N.length; i++) {
if (i == 0) {
System.out.print(N[0]);
continue;
}
System.out.print(" " + N[i]);
}
System.out.println();
}
private static boolean valid(int len) {
boolean flag = true;
for (int i = 0; i < len; i++) {
if (!isPrime(N[i] + N[i + 1])) {
flag = false;
break;
}
}
return isPrime(N[N.length - 1] + N[0]) ? flag : false;
}
private static boolean valid2(int len) {
boolean flag = true;
for (int i = 0; i < len; i++) {
if (!isPrime(N[i] + N[i + 1])) {
flag = false;
break;
}
}
return flag;
}
private static boolean isPrime(int n) {
boolean flag = true;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
flag = false;
break;
}
}
return flag;
}
}
/**************************************************************
Problem: 2128
User: admin
Language: Java
Result: Accepted
Time:1107 ms
Memory:46600 kb
****************************************************************/