#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
#define f first
#define s second
int main(){    
    int N;cin>>N;
    vector<int> groups;
    vector<int> occ(N);
    occ[0]=0;
    groups.push_back(0);
    int nG=1;
    int res,fr;
    for(int i=1;i<N;i++){
        cout<<nG+1;
        for(int j=0;j<nG;j++){
            cout<<" "<<groups[j]+1;
        }
        cout<<" "<<i+1<<endl;
        cin>>res;
        if(res==nG+1){
            groups.push_back(i);
            occ[i]=res-1;
            nG++;
            continue;
        }
        int l=0,r=nG-1;
        while(l<r){
            int m=(l+r)/2;
            cout<<(m-l)+2;
            for(int j=l;j<=m;j++){
                cout<<" "<<groups[j]+1;
            }
            cout<<" "<<i+1<<endl;
            cin>>res;
            if(res==(m-l)+2){
                l=m+1;
            }
            else{
                r=m;
            }
            
        }
        occ[i]=l;
    }
    
    cout<<0;
    for(int i=0;i<N;i++){
        cout<<" "<<occ[i]+1;
    }
    cout<<endl;
}
| # | 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... |