#include <bits/stdc++.h>
using namespace std;
const int M = 1005;
const int INF = 1e9 + 10;
int n, arr[M], mn[M], p2[M];
set<int> s;
vector<int> v;
void prec() {
  p2[0] = 1;
  for (int i = 1; i < 10; i++) p2[i] = p2[i - 1] * 2;
  for (int i = 0; i < M; i++) mn[i] = INF;
}
void update() {
  for (int i = 0; i < n; i++)
    if (s.find(i) == s.end()) mn[i] = min(mn[i], arr[i]);
}
void ask(int rem) {
  for (int i = 0; i < 10; i++) {
    v.clear();
    s.clear();
    for (int j = 0; j < n; j++)
      if ((j / p2[i]) % 2 == rem) v.push_back(j), s.insert(j);
    if (v.size() == 0) continue;
    cout << v.size() << "\n";
    for (int j = 0; j < v.size(); j++) cout << v[j] + 1 << " ";
    cout << endl;
    fflush(stdout);
    for (int i = 0; i < n; i++) cin >> arr[i];
    update();
  }
}
int main() {
  prec();
  cin >> n;
  ask(0);
  ask(1);
  cout << -1 << "\n";
  for (int i = 0; i < n; i++) cout << mn[i] << " ";
  cout << endl;
  fflush(stdout);
  return 0;
}
