#include <bits/stdc++.h>
void query(int *ww, int *aa, int k, int n) {
  int i;
  printf("%d\n", k);
  for (i = 0; i < k; i++) printf("%d ", ww[i]);
  printf("\n");
  fflush(stdout);
  for (i = 1; i <= n; i++) scanf("%d", &aa[i]);
}
int main() {
  int i, j, n;
  static int mm[1000 + 1];
  scanf("%d", &n);
  for (i = 1; i <= n; i++) mm[i] = INT_MAX;
  for (i = 0; 1 << i <= n; i++) {
    int aa[1000], bb[1000], acnt, bcnt;
    int amin[1000 + 1], bmin[1000 + 1];
    acnt = bcnt = 0;
    for (j = 1; j <= n; j++) {
      if ((j & 1 << i) == 0)
        aa[acnt++] = j;
      else
        bb[bcnt++] = j;
    }
    query(aa, amin, acnt, n);
    query(bb, bmin, bcnt, n);
    for (j = 1; j <= n; j++) {
      int min;
      min = (j & 1 << i) == 0 ? bmin[j] : amin[j];
      if (mm[j] > min) mm[j] = min;
    }
  }
  printf("-1\n");
  for (i = 1; i <= n; i++) printf("%d ", mm[i]);
  printf("\n");
  fflush(stdout);
  return 0;
}
