#include <bits/stdc++.h>
using namespace std;
const int Inf = 2000000000;
long long n;
long long Min[2000];
int temp[2000];
int main() {
  scanf("%lld", &n);
  for (int i = 0; i < 2000; i++) {
    Min[i] = Inf;
  }
  int pw2 = 0;
  long long _n = n;
  while (_n > 1) {
    _n /= 2;
    pw2++;
  }
  if (n != pow(2, pw2)) pw2++;
  for (int i = pow(2, pw2 - 1); i > 0; i /= 2) {
    printf("\n");
    memset(temp, 0, sizeof(temp));
    long long _n = n;
    _n /= i;
    vector<int> a;
    for (int j = 0; j < _n; j += 2) {
      for (int k = j * i; k < (j + 1) * i; k++) {
        a.push_back(k + 1);
        temp[k] = 1;
      }
    }
    printf("%d\n", a.size());
    for (int j = 0; j < a.size(); j++) printf("%d ", a[j]);
    printf("\n");
    fflush(stdout);
    for (int j = 0; j < n; j++) {
      long long cur;
      scanf("%lld", &cur);
      if (!temp[j]) Min[j] = min(Min[j], cur);
    }
  }
  for (int i = pow(2, pw2 - 1); i > 0; i /= 2) {
    memset(temp, 0, sizeof(temp));
    long long _n = n;
    int add = _n % i;
    _n /= i;
    vector<int> a;
    for (int j = _n; j >= 1; j -= 2) {
      for (int k = j * i - 1 + add; k >= (j - 1) * i + add; k--) {
        a.push_back(k + 1);
        temp[k] = 1;
      }
    }
    printf("%d\n", a.size());
    for (int j = 0; j < a.size(); j++) printf("%d ", a[j]);
    printf("\n");
    fflush(stdout);
    for (int j = 0; j < n; j++) {
      long long cur;
      scanf("%lld", &cur);
      if (!temp[j]) Min[j] = min(Min[j], cur);
    }
  }
  fflush(stdout);
  printf("\n%d\n", -1);
  for (int i = 0; i < n; i++) printf("%d ", Min[i]);
  return 0;
}
