#include <bits/stdc++.h>
int main(int argc, char** argv) {
  int n, nn, a[1111] = {0}, r[1111];
  scanf("%d", &n);
  for (int i = 0; i < n; i++) r[i] = 1111111111;
  for (int i = 1; i < n; i *= 2) {
    std::vector<int> b;
    for (int j = 0; j < n; j++)
      if (j / i % 2 == 0) b.push_back(j);
    printf("%d\n", (int)b.size());
    for (const auto& k : b) printf("%d ", k + 1);
    printf("\n");
    fflush(stdout);
    for (int k = 0; k < n; k++) scanf("%d", a + k);
    for (int k = 0; k < n; k++)
      if (!std::binary_search(std::begin(b), std::end(b), k))
        r[k] = std::min(a[k], r[k]);
    b.clear();
    for (int j = 0; j < n; j++)
      if (j / i % 2 == 1) b.push_back(j);
    printf("%d\n", (int)b.size());
    for (const auto& k : b) printf("%d ", k + 1);
    printf("\n");
    fflush(stdout);
    for (int k = 0; k < n; k++) scanf("%d", a + k);
    for (int k = 0; k < n; k++)
      if (!std::binary_search(std::begin(b), std::end(b), k))
        r[k] = std::min(a[k], r[k]);
  }
  printf("-1\n");
  for (int i = 0; i < n; i++) printf("%d ", r[i]);
  printf("\n");
  fflush(stdout);
  return 0;
}
