#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1010;
int n;
int ans[MAXN];
vector<int> get(int bit, int val) {
  vector<int> ret;
  for (int i = (int)(1); i < (int)(n + 1); i++) {
    if ((i & (1 << bit)) == (val << bit)) ret.push_back(i);
  }
  return ret;
}
int main() {
  ios_base::sync_with_stdio(false);
  memset(ans, 0x3f, sizeof ans);
  cin >> n;
  for (int i = (int)(0); i < (int)(10); i++) {
    for (int j = (int)(0); j < (int)(2); j++) {
      vector<int> w = get(i, j);
      if (w.empty()) continue;
      cout << w.size() << endl;
      for (int s = (int)(0); s < (int)(w.size()); s++) {
        cout << w[s];
        if (s + 1 != (int)w.size()) cout << " ";
      }
      cout << endl;
      for (int pos = (int)(1); pos < (int)(n + 1); pos++) {
        int mn;
        cin >> mn;
        if ((pos & (1 << i)) != (j << i)) ans[pos] = min(ans[pos], mn);
      }
    }
  }
  cout << -1 << endl;
  for (int i = (int)(1); i < (int)(n + 1); i++) {
    cout << ans[i];
    if (i != n) cout << " ";
  }
  cout << endl;
  return 0;
}
