#include <bits/stdc++.h>
using namespace std;
const int maxn = 1100;
int l[maxn], r[maxn], m1[maxn], m2[maxn];
int main() {
  int n;
  long long ans[maxn];
  fill(ans, ans + maxn - 1, 1e12);
  cin >> n;
  for (int i = 1; i < n; i *= 2) {
    bool mark[maxn] = {};
    vector<int> v[2];
    int k = 0;
    while (k < n) {
      int tk = k;
      for (k; k < n && k < tk + i; k++) {
        mark[k] = 1;
        v[0].push_back(k);
      }
      k += i;
    }
    for (int j = 0; j < n; j++)
      if (!mark[j]) v[1].push_back(j);
    for (int i = 0; i < 2; i++) {
      if (v[i].size() == 0) continue;
      cout << v[i].size() << endl;
      for (auto u : v[i]) cout << u + 1 << " ";
      cout << endl;
      fflush(stdout);
      int a[maxn];
      for (int j = 0; j < n; j++) cin >> a[j];
      for (int j = 0; j < n; j++)
        if (mark[j] == i) ans[j] = min(ans[j], (long long)a[j]);
    }
  }
  cout << -1 << endl;
  for (int i = 0; i < n; i++) cout << ans[i] << " ";
  cout << endl;
  return 0;
}
