#include <bits/stdc++.h>   using namespace std;   int wyn[1024];   int odp[1024];   int n;   int pyt;   vector<pair<int, int> > v[2];   void pytaj(vector<int>& skad, vector<int>& gdzie) {     if (skad.size() == 0) return;     printf( %d n , int(skad.size()));     for (int i = 0; i < skad.size(); i++) printf( %d  , skad[i] + 1);     printf(  n );     fflush(stdout);     for (int i = 0; i < n; i++) scanf( %d , &odp[i]);     pyt++;     for (int q = 0; q < gdzie.size(); q++) {       int i = gdzie[q];       wyn[i] = min(wyn[i], odp[i]);     }   }   int main() {     pyt = 0;     scanf( %d , &n);     for (int i = 0; i < n; i++) wyn[i] = 1000000010;     v[0].push_back(make_pair(0, n - 1));     int akt = 0;     while (!v[akt].empty()) {       v[1 - akt].clear();       vector<int> pyt1, pyt2;       for (int k = 0; k < v[akt].size(); k++) {         int a = v[akt][k].first;         int b = v[akt][k].second;         int sr = (a + b) / 2;         for (int q = a; q <= sr; q++) pyt1.push_back(q);         for (int q = sr + 1; q <= b; q++) pyt2.push_back(q);         if (sr > a) v[1 - akt].push_back(make_pair(a, sr));         if (b > sr + 1) v[1 - akt].push_back(make_pair(sr + 1, b));       }       pytaj(pyt1, pyt2);       pytaj(pyt2, pyt1);       akt = 1 - akt;     }     printf( -1 n );     for (int i = 0; i < n; i++) printf( %d  , wyn[i]);     printf(  n );     fflush(stdout);   }   