#include <bits/stdc++.h>
using namespace std;
struct block {
  pair<int, int> st, ed;
};
int n, res[1001], tmp[1001];
vector<block> q[22][2];
void init(int sz, int pos, int lvl) {
  assert(lvl <= 20);
  if (sz == 1) return;
  init(sz >> 1, pos, lvl + 1);
  init(sz + 1 >> 1, pos + (sz >> 1), lvl + 1);
  q[lvl][0].push_back(
      {{pos, pos + (sz >> 1)}, {pos + (sz >> 1) - 1, pos + sz - 1}});
  q[lvl][1].push_back(
      {{pos + (sz >> 1), pos}, {pos + sz - 1, pos + (sz >> 1) - 1}});
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n;
  for (int i = 1; i <= n; i++) res[i] = INT_MAX;
  init(n, 1, 0);
  for (int x = 0; q[x][0].size() or q[x][1].size(); x++)
    for (int tp = 0; tp <= 1; tp++) {
      assert(x < 10);
      vector<int> idx;
      for (block b : q[x][tp])
        for (int i = b.st.second; i <= b.ed.second; i++) idx.push_back(i);
      cout << idx.size() << endl;
      for (int i : idx) cout << i << ' ';
      cout << endl;
      for (int i = 1; i <= n; i++) cin >> tmp[i];
      for (block b : q[x][tp])
        for (int i = b.st.first; i <= b.ed.first; i++)
          res[i] = min(tmp[i], res[i]);
    }
  cout << -1 << endl;
  for (int i = 1; i <= n; i++) cout << res[i] << ' ';
  cout << endl;
}
