#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using pll = pair<ll, ll>;
using vll = vector<ll>;
using vpll = vector<pll>;
struct d_ {
  template <typename T>
  d_& operator,(const T& x) {
    cerr << ' ' << x;
    return *this;
  }
} d_t;
int mix[1024];
int main(void) {
  ios_base::sync_with_stdio(false);
  ll n;
  cin >> n;
  ;
  fill(begin(mix), end(mix), (int)1e9 + 7);
  int st = 2;
  for (ll i(0); i < 10; i++) {
    for (ll k(0); k < 2; k++) {
      set<int> vals;
      for (ll j(0); j < n; j++) {
        if (j % st < st / 2 and k == 0) {
          vals.insert(j);
        } else if (j % st >= st / 2 and k == 1) {
          vals.insert(j);
        }
      }
      if (vals.empty()) continue;
      char* sp = "";
      cout << vals.size() << "\n";
      for (auto e : vals) {
        cout << sp << e + 1;
        sp = " ";
      }
      cout << endl;
      for (ll j(0); j < n; j++) {
        ll vl;
        cin >> vl;
        ;
        if (!vals.count(j)) {
          mix[j] = min(mix[j], (int)vl);
        }
      }
      cout << endl;
    }
    st *= 2;
  }
  cout << "-1" << endl;
  char* sp = "";
  for (ll i(0); i < n; i++) {
    cout << sp << mix[i];
    sp = " ";
  }
  return 0;
}
