#include <bits/stdc++.h>
using namespace std;
const int N = 1024;
int n, a[11][N], b[11][N], f[N], c[N], d[N], e[N];
int minx(int x, int y) {
  if (x < y) y = x;
  return y;
}
int main(void) {
  int i, j, k;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) f[i] = 1000000008;
  for (k = 1; k < n; k *= 2) {
    memset(e, 0, sizeof(e));
    c[0] = 0;
    for (i = 1; i <= n; i += k + k) {
      for (j = 1; j <= k && i + j - 1 <= n; j++) {
        c[++c[0]] = i + j - 1;
        e[i + j - 1] = 1;
      }
    }
    printf("%d\n", c[0]);
    for (i = 1; i <= c[0]; i++) printf("%d ", c[i]);
    fflush(stdout);
    for (i = 1; i <= n; i++) scanf("%d", d + i);
    for (i = 1; i <= n; i++)
      if (e[i] == 0) f[i] = minx(f[i], d[i]);
    memset(e, 0, sizeof(e));
    c[0] = 0;
    for (i = 1 + k; i <= n; i += k + k) {
      for (j = 1; j <= k && i + j - 1 <= n; j++) {
        c[++c[0]] = i + j - 1;
        e[i + j - 1] = 1;
      }
    }
    printf("%d\n", c[0]);
    for (i = 1; i <= c[0]; i++) printf("%d ", c[i]);
    fflush(stdout);
    for (i = 1; i <= n; i++) scanf("%d", d + i);
    for (i = 1; i <= n; i++)
      if (e[i] == 0) f[i] = minx(f[i], d[i]);
  }
  printf("-1\n");
  for (i = 1; i <= n; i++) printf("%d ", f[i]);
  fflush(stdout);
  return 0;
}
