#include <bits/stdc++.h>
using namespace std;
const int N = 151;
int par[N];
int ask(vector<int>& a) {
cout << a.size() << ' ';
for (auto &x : a) cout << x << ' ';
cout << endl;
int t; cin >> t;
return t;
}
int fp(int x) {
if (par[x] == -1) return x;
return par[x] = fp(par[x]);
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0);
memset(par, -1, sizeof(par));
int n; cin >> n;
for (int i = 1; i < n; i++) {
int l = i+1, r = n;
vector<int> a;
for (int j = i+1; j <= n; j++) a.emplace_back(j);
int ex = ask(a);
a.emplace_back(i);
int in = ask(a);
if (ex != in) continue;
while (l < r) {
int mid = (l + r) / 2;
vector<int> a;
for (int j = i+1; j <= mid; j++) a.emplace_back(j);
ex = ask(a);
a.emplace_back(i);
in = ask(a);
if (in == ex) r = mid;
else l = mid + 1;
}
int pu = fp(i), pv = fp(l);
if (pu != pv) par[pu] = pv;
}
map<int, int> mp;
for (int i = 1; i <= n; i++)
if (!mp.count(fp(i))) mp[fp(i)] = mp.size() + 1;
cout << "0 ";
for (int i = 1; i <= n; i++) cout << mp[fp(i)] << ' ';
return 0;
}