#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9 + 10;
const int N = 1e3 + 50;
int hh = 0;
int n;
int mm[N], q[N];
vector<pair<int, pair<int, int> > > ans1[N], ans2[N];
void rec(int left, int right, int h) {
  if (left == right || left > n - 1) return;
  hh = max(h + 1, hh);
  int mid = (right + left) / 2;
  rec(left, mid, h + 1);
  rec(mid + 1, right, h + 1);
  for (int i = left; i <= min(n - 1, mid); i++) {
    ans1[h].push_back(make_pair(i, make_pair(mid + 1, min(n - 1, right))));
  }
  for (int i = mid + 1; i <= min(n - 1, right); i++) {
    ans2[h].push_back(make_pair(i, make_pair(left, mid)));
  }
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) mm[i] = INF;
  int m = 1;
  while (m < n) {
    m *= 2;
  }
  rec(0, m - 1, 0);
  for (int i = 0; i < hh; i++) {
    cout << ans1[i].size() << endl;
    for (int j = 0; j < ans1[i].size(); j++)
      cout << ans1[i][j].first + 1 << " ";
    cout << endl;
    for (int j = 0; j < n; j++) cin >> q[j];
    for (int j = 0; j < ans1[i].size(); j++) {
      for (int k = ans1[i][j].second.first; k <= ans1[i][j].second.second;
           k++) {
        mm[k] = min(mm[k], q[k]);
      }
    }
    cout << ans2[i].size() << endl;
    for (int j = 0; j < ans2[i].size(); j++)
      cout << ans2[i][j].first + 1 << " ";
    cout << endl;
    for (int j = 0; j < n; j++) cin >> q[j];
    for (int j = 0; j < ans2[i].size(); j++) {
      for (int k = ans2[i][j].second.first; k <= ans2[i][j].second.second;
           k++) {
        mm[k] = min(mm[k], q[k]);
      }
    }
  }
  cout << -1 << endl;
  for (int i = 0; i < n; i++) cout << mm[i] << " ";
  return 0;
}
