#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fs first
#define sc second
using namespace std;
// int ask(vector<int> vec){
//     cout << vec.size() << endl;
//     for(auto v:vec){
//         cout << v << " ";
//     }
//     cout << endl;
//     int ans;
//     cin >> ans;
//     return ans;
// }
signed main() {
	int n;
    cin >> n;
    int col = 0;
    int ans[n + 1];
    
    vector<int> v;
    for(int i = 1; i <= n; i++){
        cout << v.size() + 1;
        for(auto u:v) cout << u << " ";
        cout << i << endl;
        int res; cin >> res;
        if(res == v.size() + 1){
            v.pb(i);
            col++;
            ans[i] = col;
            continue;
        }
        int l = 0, r = v.size() - 1, anss = 0;
        while(l <= r){
            int mid = (l + r) / 2;
            cout << mid + 2 << endl;
            for(int j = 0; j <= mid; j++) cout << v[j] << " "; 
            cout << i << endl;
            int ress; cin >> ress;
            if(ress == mid + 2){
                l = mid + 1;
            }else{
                anss = r;
                r = mid - 1;
            }
        }
        ans[i] = ans[v[anss]];
    }
    for(int i = 1; i <= n; i++) cout << ans[i] << " ";
}
| # | 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... |