#include <bits/stdc++.h>
using namespace std;
int minValue[1005];
const int INF = 2e9;
int n;
int temp[1005];
vector<int> query;
vector<int> answer;
void ask() {
  int di = 0;
  int nn = n;
  while (nn) {
    di++;
    nn >>= 1;
  }
  for (int i = 0; i < di; i++) {
    for (int j = 0; j <= 1; j++) {
      query.clear();
      answer.clear();
      for (int num = 1; num <= n; num++) {
        if ((num & (1 << i)) == (j << i))
          query.push_back(num);
        else
          answer.push_back(num);
      }
      printf("%d\n", query.size());
      for (auto ele : query) printf("%d ", ele);
      puts("");
      fflush(stdout);
      for (int num = 1; num <= n; num++) scanf("%d", &temp[num]);
      for (auto ele : answer) minValue[ele] = min(minValue[ele], temp[ele]);
    }
  }
}
int main() {
  fill(minValue, minValue + 1005, INF);
  scanf("%d", &n);
  ask();
  puts("-1");
  for (int i = 1; i <= n; i++) printf("%d%c", minValue[i], i == n ? '\n' : ' ');
  fflush(stdout);
  return 0;
}
