#include <bits/stdc++.h>
using namespace std;
int n, a[1000005], seen[1000005], sol[1000005], ans[1000005];
vector<int> v1, v2;
inline void Solve(vector<int> v, int val[]) {
  for (int i = 1; i <= n; ++i) seen[i] = 0;
  for (auto it : v) seen[it] = 1;
  for (int i = 1; i <= n; ++i)
    if (!seen[i]) sol[i] = min(sol[i], val[i]);
}
int main() {
  int i, j, cnt, bit;
  cin >> n;
  for (i = 1; i <= n; ++i) sol[i] = 1000000000;
  for (bit = 0; bit < 10; ++bit) {
    v1.clear();
    v2.clear();
    for (i = 1; i <= n; ++i)
      if ((1 << bit) & i)
        v1.push_back(i);
      else
        v2.push_back(i);
    if (v1.size() && v1.size() < n) {
      cout << v1.size() << "\n";
      for (auto it : v1) cout << it << " ";
      cout << "\n";
      cout.flush();
      for (i = 1; i <= n; ++i) cin >> ans[i];
      Solve(v1, ans);
    }
    if (v2.size() && v2.size() < n) {
      cout << v2.size() << "\n";
      for (auto it : v2) cout << it << " ";
      cout << "\n";
      cout.flush();
      for (i = 1; i <= n; ++i) cin >> ans[i];
      Solve(v2, ans);
    }
  }
  cout << "-1\n";
  for (i = 1; i <= n; ++i) cout << sol[i] << " ";
  cout << "\n";
  cout.flush();
  return 0;
}
