#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int P;
int mask;
int len;
vector< vector<int> > tracks;
vector<char> S;
vector<int> sList;
bool outputSet = 1;
int popcount(int x) {
int c = 0;
while (x) {
c += (x & 1);
x >>= 1;
}
return c;
}
bool cmpTracks(const vector<int>& a, const vector<int>& b) {
return popcount(a[0]) < popcount(b[0]);
}
bool dfs(int idx) {
if (idx == (int)tracks.size()) return true;
const vector<int>& cand = tracks[idx];
int cnt = 0;
for (size_t i = 0; i < cand.size(); ++i) {
if (S[cand[i]]) ++cnt;
}
if (cnt > 1) return false;
if (cnt == 1) return dfs(idx + 1);
for (size_t i = 0; i < cand.size(); ++i) {
int x = cand[i];
bool ok = true;
for (size_t j = 0; j < sList.size(); ++j) {
int z = x & sList[j];
if (!S[z]) {
ok = false;
break;
}
}
if (!ok) continue;
S[x] = 1;
sList.push_back(x);
if (dfs(idx + 1)) return true;
S[x] = 0;
sList.pop_back();
}
return false;
}
void printSetOfBits(int x) {
cout << "{";
bool first = true;
for (int b = 0; b < P - 1; ++b) {
if (x & (1 << b)) {
if (!first) cout << ",";
cout << b;
first = false;
}
}
cout << "," << P - 1;
cout << "}";
}
int main() {
cin >> P;
if (P < 2) {
cout << "Not found" << endl;
return 0;
}
mask = (1 << (P - 1)) - 1;
len = 1 << (P - 1);
int total = 1 << P;
vector<char> visited(total, 0);
for (int n = 0; n < total; ++n) {
if (visited[n]) continue;
vector<int> cand;
int cur = n;
for (int k = 0; k < P; ++k) {
visited[cur] = 1;
if (cur & (1 << (P - 1))) {
int x = cur & mask;
bool found = false;
for (size_t t = 0; t < cand.size(); ++t) {
if (cand[t] == x) {
found = true;
break;
}
}
if (!found) cand.push_back(x);
}
cur = ((cur << 1) | (cur >> (P - 1))) & (total - 1);
}
if (!cand.empty()) {
tracks.push_back(cand);
}
}
sort(tracks.begin(), tracks.end(), cmpTracks);
S.assign(len, 0);
sList.clear();
if (dfs(0)) {
if (outputSet) {
for (int i = 0; i < len; ++i) {
if (S[i]) {
printSetOfBits(i);
cout << endl;
}
}
} else {
for (int i = 0; i < len; ++i) {
cout << (S[i] ? '1' : '0');
}
cout << endl;
}
} else {
cout << "Not found" << endl;
}
return 0;
}