/* ================================================
* _____ _____ _____ _____
* / ___| | _ \ |_ _| / ___|
* | | | |_| | | | | |___
* | | | _ / | | \___ \
* | |___ | | \ \ _| |_ ___| |
* \_____| |_| \_\|_____| |_____/
*
* "Quality is not an act, it is a habit."
==================================================== */
#include "bits/stdc++.h"
#define int long long
#define vi vector <int>
#define vv vector <vector<int>>
#define all(v) v.begin() , v.end()
using namespace std;
template<typename T>
istream &operator>>(istream &in, vector<T> &v) {
for (auto &x: v) in >> x;
return in;
}
template<typename T>
ostream &operator<<(ostream &out, const vector<T> &v) {
for (size_t i = 0; i < v.size(); ++i) out << v[i] << (i + 1 == v.size() ? "" : " ");
return out;
}
const int N = 20, mod = 1e9 + 7;
int n;
bool used[17] = {false};
vi v = {1};
set <int> primes = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31};
void garb(int idx = 2, int cnt = 1){
if(cnt == n){
if(!primes.count(v[0] + v[n - 1])) return;
cout << v << endl;
return;
}
if(idx > n) return;
if(!used[idx] and primes.count(v.back() + idx)){
used[idx] = true;
v.push_back(idx);
garb(2, cnt + 1);
v.pop_back();
used[idx] = false;
}
garb(idx + 1, cnt);
}
void solve() {
int c = 1;
while(cin >> n){
v.clear();
v.push_back(1);
cout << "Case " << c ++ << ":\n";
garb();
}
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t = 1;
// cin >> t;
while (t--) {
solve();
}
return 0;
}
LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqICBfX19fXyAgIF9fX19fICAgX19fX18gICBfX19fXyAKICogLyAgX19ffCB8ICBfICBcIHxfICAgX3wgLyAgX19ffAogKiB8IHwgICAgIHwgfF98IHwgICB8IHwgICB8IHxfX18gCiAqIHwgfCAgICAgfCAgXyAgLyAgIHwgfCAgIFxfX18gIFwKICogfCB8X19fICB8IHwgXCBcICBffCB8XyAgIF9fX3wgfAogKiBcX19fX198IHxffCAgXF9cfF9fX19ffCB8X19fX18vCiAqCiAqICJRdWFsaXR5IGlzIG5vdCBhbiBhY3QsIGl0IGlzIGEgaGFiaXQuIgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwojaW5jbHVkZSAiYml0cy9zdGRjKysuaCIKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgdmkgdmVjdG9yIDxpbnQ+CiNkZWZpbmUgdnYgdmVjdG9yIDx2ZWN0b3I8aW50Pj4KI2RlZmluZSBhbGwodikgdi5iZWdpbigpICwgdi5lbmQoKQp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KaXN0cmVhbSAmb3BlcmF0b3I+Pihpc3RyZWFtICZpbiwgdmVjdG9yPFQ+ICZ2KSB7CiAgICBmb3IgKGF1dG8gJng6IHYpIGluID4+IHg7CiAgICByZXR1cm4gaW47Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+Cm9zdHJlYW0gJm9wZXJhdG9yPDwob3N0cmVhbSAmb3V0LCBjb25zdCB2ZWN0b3I8VD4gJnYpIHsKICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdi5zaXplKCk7ICsraSkgb3V0IDw8IHZbaV0gPDwgKGkgKyAxID09IHYuc2l6ZSgpID8gIiIgOiAiICIpOwogICAgcmV0dXJuIG91dDsKfQoKY29uc3QgaW50IE4gPSAyMCwgbW9kID0gMWU5ICsgNzsKaW50IG47CmJvb2wgdXNlZFsxN10gPSB7ZmFsc2V9Owp2aSB2ID0gezF9OwpzZXQgPGludD4gcHJpbWVzID0gezIsIDMsIDUsIDcsIDExLCAxMywgMTcsIDE5LCAyMywgMjksIDMxfTsKCnZvaWQgZ2FyYihpbnQgaWR4ID0gMiwgaW50IGNudCA9IDEpewogICAgaWYoY250ID09IG4pewogICAgICAgIGlmKCFwcmltZXMuY291bnQodlswXSArIHZbbiAtIDFdKSkgcmV0dXJuOwogICAgICAgIGNvdXQgPDwgdiA8PCBlbmRsOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmKGlkeCA+IG4pIHJldHVybjsKCiAgICBpZighdXNlZFtpZHhdIGFuZCBwcmltZXMuY291bnQodi5iYWNrKCkgKyBpZHgpKXsKICAgICAgICB1c2VkW2lkeF0gPSB0cnVlOwogICAgICAgIHYucHVzaF9iYWNrKGlkeCk7CiAgICAgICAgZ2FyYigyLCBjbnQgKyAxKTsKCiAgICAgICAgdi5wb3BfYmFjaygpOwogICAgICAgIHVzZWRbaWR4XSA9IGZhbHNlOwogICAgfQoKICAgIGdhcmIoaWR4ICsgMSwgY250KTsKfQoKdm9pZCBzb2x2ZSgpIHsKICAgIGludCBjID0gMTsKICAgIHdoaWxlKGNpbiA+PiBuKXsKICAgICAgICB2LmNsZWFyKCk7CiAgICAgICAgdi5wdXNoX2JhY2soMSk7CiAgICAgICAgY291dCA8PCAiQ2FzZSAiIDw8IGMgKysgPDwgIjpcbiI7CiAgICAgICAgZ2FyYigpOwogICAgfQp9CgpzaWduZWQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShOVUxMKTsKCiAgICBpbnQgdCA9IDE7CiAgICAvLyBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQoKICAgIHJldHVybiAwOwp9