#include <bits/stdc++.h>
using namespace std;
using lli = long long int;
using pll = pair<lli, lli>;
const long long int oo = 1000 * 1000 * 1000;
struct Coord {
  int x, y;
  Coord(int x = 0, int y = 0) : x(x), y(y) {}
  Coord operator+(const Coord& droite) const {
    return Coord(x + droite.x, y + droite.y);
  }
};
int dicho[1042][10][2];
int main() {
  int n;
  scanf("%d", &n);
  for (int k = 0; k < (n); ++k)
    for (int i = 0; i < (10); ++i)
      for (int j = 0; j < (2); ++j) dicho[k][i][j] = oo;
  int low = 1;
  while ((1 << low) <= n) ++low;
  for (int i = 0; i < (low); ++i)
    for (int j = 0; j < (2); ++j) {
      vector<int> req;
      for (int k = 0; k < (n); ++k)
        if ((bool)((1 << i) & k) == j) req.push_back(k);
      if (req.size()) {
        printf("%d\n", req.size());
        for (auto k : req) printf("%d ", k + 1);
        printf("\n");
        fflush(stdout);
        for (int k = 0; k < (n); ++k) scanf("%d", &dicho[k][i][j]);
      }
    }
  printf("-1\n");
  for (int i = 0; i < (n); ++i) {
    int mini = oo;
    for (int j = 0; j < (low); ++j)
      mini = min(mini, dicho[i][j][1 - (bool)((1 << j) & i)]);
    printf("%d ", mini);
  }
  printf("\n");
  fflush(stdout);
  return 0;
}
