#include <bits/stdc++.h>
using namespace std;
#define int long long 
#define pll pair<int, int>
#define mp make_pair
#define pb push_back
#define f first
#define s second
signed main(){
	int n;cin>>n;
	vector<int> ans(n+1, 0), pfx(n+1, 1);
	for(int i=2;i<=n;i++){
		cout<<i<<" ";
		for(int j=1;j<=i;j++) cout<<j<<" ";
		cout<<endl;
		cin>>pfx[i];
	}
	for(int i=1;i<=n;i++)ans[i]=i;
	int cnt=2;
	for(int i=2;i<=n;i++){
		assert(pfx[i]-pfx[i-1]<=1);
		if(pfx[i]==pfx[i-1]+1){
			ans[i]=cnt++;
		}
		else {
			int l=1, r=i, m;
			while(r-l>1){
				m=(l+r)/2;
				set<int> s;
				cout<<i-m+1<<" ";
				for(int j=m;j<=i;j++){
					cout<<j<<" ";
					s.insert(ans[j]);
				}
				cout<<endl;
				int act, sup=s.size();cin>>act;
				assert(act >= sup-1 and act <= sup);
				if(act == sup)r=m;
				else l=m;
			}
			ans[i]=ans[l];
		}
	}
	cout<<"0 ";
	for(int i=1;i<=n;i++)cout<<ans[i]<<" ";
	return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |