#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
#define all(a) a.begin(),a.end()
const int maxn = 2 * 1e6;
const int mod =  1e9 + 7;
 vector <int> bin = {1};
int que(int in ,int st,int en){
  cout<<bin.size() + 1<<' '<<in<<' ';
  for(int i = st;i <= en;i++)cout<<bin[i]<<' ';
  cout<<endl;
  cout.flush();
  int an;
  cin>>an;
  return an;
}
signed main(){
    ios::sync_with_stdio(false);
cin.tie(nullptr);
  int n;
  cin>>n;
  vector <int> ans(n + 1, 0);
  ans[1] = 1;
  for(int i = 2;i <= n;i++){
    int c = que(i, 0, bin.size() - 1);
    if(c > bin.size()){
      bin.push_back(i);
      ans[i] = bin.size();
      continue ;
    }
    int st = 0,en = bin.size() - 1,mid;
    while(st <= en){
      mid = (st + en )/2;
      c = que(i ,st , mid);
      if(c == (mid-st+1)){
        en = mid - 1;
        ans[i] = ans[mid + 1];
      }
      else{
        st = mid + 1;
      }
     
    }
  } 
  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... |