//0 1 2 ... 16
void bktk(int lev){
	if(lev == n){
		// last Number + first Number = 1
		if(isPrime[ring[n-1] + 1] == 1){
			printf("1");
			for(int i=0; i<lev; i++)
				printf(" %d",ring[i]);
			printf("\n");
		}
		return;
	}

	for(int i=0; i<n; i++){
		ring[lev] = num[i];
		if(taken[i])
			continue;

		// first number = 1 + last number
		if(lev == 0 && isPrime[1 + ring[lev]] == 0)
			continue;

		if(lev && isPrime[ring[lev-1] + ring[lev]] == 0)
			continue;

		taken[i] = 1;
		bktk(lev+1);
		taken[i] = 0;
	}
}
int main(){
	int t = 0;

	while(scanf("%d",&n) == 1){
		if(t)	printf("\n");
		printf("Case %d:\n",++t);

		n--;
		bktk(0);
	}
	return 0;
}
int main () {
    for ( int i = 0; i < 5; i++ ) {
        for ( int j = 0; j < 5; j++ ) {
            matrix [i] [j] = 0;
        }
    }

    matrix [0] [1] = matrix [0] [2] = matrix [0] [4] = 1;
    matrix [1] [0] = matrix [1] [2] = matrix [1] [4] = 1;
    matrix [2] [0] = matrix [2] [1] = matrix [2] [3] = matrix [2] [4]= 1;
    matrix [3] [2] = matrix [3] [4] = 1;
    matrix [4] [0] = matrix [4] [1] = matrix [4] [2] = matrix [4] [3]= 1;

    bktk (0, 0);
    return 0;
}
void bktk (int at, int cnt) {
    arr [cnt] = at;

    if ( cnt == 8 ) {
        for ( int i = 0; i < 9; i++ )
            printf ("%d", arr [i] + 1);
        printf ("\n");
        return;
    }

    for ( int i = 0; i < 5; i++ ) {
        if ( matrix [at] [i] ) {
            matrix [at] [i] = matrix [i] [at] = 0;
            bktk (i, cnt + 1);
            matrix [at] [i] = matrix [i] [at] = 1;
        }
    }

}