#include<bits/stdc++.h>
using namespace std;
vector<int> n3;
void answer(){
for (int i = 0;i<(int)n3.size();i++) cout<<n3[i]<<" ";
}
int q(const vector<int>& m){
cout<<m.size()<<" ";
for (int i = 0;i<m.size();i++) cout<<m[i]<<" ";
cout<<endl;
int n2;
cin>>n2;
return n2;
}
signed main(){
int n;
cin>>n;
int x1 = 0;
vector<int> n1;
int c = 0;
n3.assign(n,0);
for (int i = 0;i<n;i++){
n1.push_back(i+1);
int n2 = q(n1);
if (n2>c){
c++;
x1++;
}
else{n1.pop_back();}
}
for (int i = 0;i<n1.size();i++){n3[n1[i]-1] = i+1;}
if (x1==n) {answer();return 0;}
for (int i = 0;i<n;i++){
if (n3[i]!=0) continue;
int a = 0;
int b = (int)n3.size()-1;
while (a<b){
int x = (a+b)/2;
vector<int> n4;
for (int j= a;j<=x;j++) n4.push_back(n1[j]);
n4.push_back(i+1);
int y = q(n4);
if (y==(x-a+1)) b = x;
else a = x+1;
}
n3[i] = n3[n1[a]-1];
}
answer();
return 0;
}