#include <bits/stdc++.h>
using namespace std;
int ans[1005];
bool vis[1005];
int main() {
  for (int i = 0; i < 1001; i++) ans[i] = 2e9;
  int n;
  scanf("%d", &n);
  int len = 1;
  for (int i = 1; i <= 10; i++) {
    vector<int> vec1, vec2;
    for (int j = 0; j < n; j++) {
      if (j % (len * 2) < len)
        vec1.push_back(j + 1);
      else
        vec2.push_back(j + 1);
    }
    memset(vis, 0, sizeof(vis));
    if (vec1.size()) {
      printf("%d\n", vec1.size());
      fflush(stdout);
      for (int j = 0; j < vec1.size(); j++) {
        vis[vec1[j]] = 1;
        printf("%d ", vec1[j]);
        fflush(stdout);
      }
      printf("\n");
      fflush(stdout);
      for (int j = 1; j <= n; j++) {
        int x;
        scanf("%d", &x);
        if (vis[j])
          ;
        else
          ans[j] = min(ans[j], x);
      }
    }
    memset(vis, 0, sizeof(vis));
    if (vec2.size()) {
      printf("%d\n", vec2.size());
      fflush(stdout);
      for (int j = 0; j < vec2.size(); j++) {
        vis[vec2[j]] = 1;
        printf("%d ", vec2[j]);
        fflush(stdout);
      }
      printf("\n");
      fflush(stdout);
      for (int j = 1; j <= n; j++) {
        int x;
        scanf("%d", &x);
        if (vis[j])
          ;
        else
          ans[j] = min(ans[j], x);
      }
    }
    len *= 2;
  }
  printf("-1\n");
  fflush(stdout);
  for (int i = 1; i <= n; i++) {
    printf("%d ", ans[i]);
    fflush(stdout);
  }
  printf("\n");
  fflush(stdout);
  return 0;
}
