#include <bits/stdc++.h>
using namespace std;
int const N = 1024;
int n, tr, br[2000], a[2000], mt, ans[2000], q;
vector<int> upit[100];
int main() {
  int n;
  cin >> n;
  tr = 1024;
  mt = 1;
  q = 0;
  for (int i = 1; i <= n; i++) {
    ans[i] = 1000000000;
  }
  for (int i = 1; i <= 10; i++) {
    tr /= 2;
    for (int j = 1; j <= (N / tr); j++) {
      mt *= (-1);
      for (int h = 1; h <= tr; h++) {
        br[(j - 1) * tr + h] = mt;
      }
    }
    q++;
    for (int j = 1; j <= n; j++) {
      if (br[j] == 1) {
        upit[q].push_back(j);
      }
    }
    if (upit[q].size() > 0) {
      cout << upit[q].size() << endl;
      fflush(stdout);
      for (int j = 0; j < upit[q].size(); j++) {
        cout << upit[q][j] << " ";
        fflush(stdout);
      }
      for (int j = 1; j <= n; j++) {
        cin >> a[j];
        if (br[j] == -1) {
          ans[j] = min(ans[j], a[j]);
        }
      }
    }
    q++;
    for (int j = 1; j <= n; j++) {
      if (br[j] == -1) {
        upit[q].push_back(j);
      }
    }
    if (upit[q].size() > 0) {
      cout << upit[q].size() << endl;
      fflush(stdout);
      for (int j = 0; j < upit[q].size(); j++) {
        cout << upit[q][j] << " ";
        fflush(stdout);
      }
      for (int j = 1; j <= n; j++) {
        cin >> a[j];
        if (br[j] == 1) {
          ans[j] = min(ans[j], a[j]);
        }
      }
    }
  }
  cout << "-1" << endl;
  fflush(stdout);
  for (int i = 1; i <= n; i++) {
    cout << ans[i] << " ";
    fflush(stdout);
  }
  return 0;
}
