#include <bits/stdc++.h>
using namespace std;
int re[1100];
int m[1100];
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < (int)(n + 1); i++) m[i] = (int)(1e9 + 10);
  for (int i = 0; i < (int)(10); i++) {
    int k = 0;
    vector<int> qu;
    for (int j = (int)(1); j < (int)(n + 1); j++) {
      if ((1 << i) & j) {
        k++;
        qu.push_back(j);
      }
    }
    if (k) {
      printf("%d\n", k);
      for (int l = 0; l < (int)(k - 1); l++) printf("%d ", qu[l]);
      if (k) printf("%d\n", qu[k - 1]);
      fflush(stdout);
      for (int j = (int)(1); j < (int)(n + 1); j++) cin >> re[j];
      for (int j = (int)(1); j < (int)(n + 1); j++) {
        if (((1 << i) & j) == 0) {
          m[j] = min(m[j], re[j]);
        }
      }
    }
  }
  for (int i = 0; i < (int)(10); i++) {
    int k = 0;
    vector<int> qu;
    for (int j = (int)(1); j < (int)(n + 1); j++) {
      if (((1 << i) & j) == 0) {
        k++;
        qu.push_back(j);
      }
    }
    if (k) {
      printf("%d\n", k);
      for (int l = 0; l < (int)(k - 1); l++) printf("%d ", qu[l]);
      if (k) printf("%d\n", qu[k - 1]);
      fflush(stdout);
      for (int j = (int)(1); j < (int)(n + 1); j++) cin >> re[j];
      for (int j = (int)(1); j < (int)(n + 1); j++) {
        if (((1 << i) & j)) {
          m[j] = min(m[j], re[j]);
        }
      }
    }
  }
  cout << -1 << endl;
  for (int i = (int)(1); i < (int)(n); i++) cout << m[i] << " ";
  cout << m[n] << endl;
  cout << flush;
  return 0;
}
