#include <bits/stdc++.h>
using namespace std;
const int N = 1 << 17;
vector<int> f, g;
int n, t[N], res[N];
void Get(vector<int>& f, vector<int>& g) {
  if (!f.size() || !g.size()) return;
  cout << f.size() << endl;
  for (int i = 0; i < f.size(); i++) printf("%d ", f[i]);
  cout << endl;
  fflush(stdout);
  for (int i = 1; i <= n; i++) scanf("%d", t + i);
  for (int i = 0; i < g.size(); i++) res[g[i]] = min(res[g[i]], t[g[i]]);
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) res[i] = 1 << 30;
  for (int i = 0; i < 10; i++) {
    f.clear(), g.clear();
    for (int j = 1; j <= n; j++)
      if (j & (1 << i))
        f.push_back(j);
      else
        g.push_back(j);
    Get(f, g), Get(g, f);
  }
  puts("-1");
  for (int i = 1; i <= n; i++) printf("%d ", res[i]);
  cout << endl;
  fflush(stdout);
}
