#include <bits/stdc++.h>
using namespace std;
int ans[1000];
int INF = 1 << 30;
int n;
int x[1000];
void go(vector<int> &v) {
  cout << v.size() << "\n";
  for (int i = 0; i < v.size(); i++) {
    cout << v[i] + 1 << " ";
  }
  cout << endl;
  fflush(stdout);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n;
  for (int i = 0; i < 1000; i++) ans[i] = INF;
  for (int i = 0; i < 10; i++) {
    for (int j = 0; j <= 1; j++) {
      vector<int> query;
      for (int k = 0; k < n; k++) {
        if (((k >> i) & 1) == j) {
          query.push_back(k);
        }
      }
      if (query.size() != 0) {
        go(query);
        for (int k = 0; k < n; k++) {
          cin >> x[k];
        }
        bool good[1000];
        for (int k = 0; k < n; k++) good[k] = 1;
        for (int k = 0; k < query.size(); k++) {
          good[query[k]] = 0;
        }
        for (int k = 0; k < n; k++) {
          if (good[k]) ans[k] = min(ans[k], x[k]);
        }
      }
    }
  }
  cout << "-1"
       << "\n";
  for (int i = 0; i < n; i++) {
    cout << ans[i] << " ";
  }
  return 0;
}
