#include <bits/stdc++.h>
using namespace std;
const int N = 1000;
const int INF = 1e9 + 7;
int n, ans[N + 1], tmp[N + 1], c;
pair<int, int> a[N + 1], b[N + 1];
void ask(bool r) {
  int k = 0;
  for (int i = 1; i <= c; ++i) {
    int mid = a[i].first + a[i].second >> 1;
    k += r ? a[i].second - mid : mid - a[i].first + 1;
  }
  printf("%d\n", k);
  for (int i = 1; i <= c; ++i) {
    int mid = a[i].first + a[i].second >> 1;
    if (r)
      for (int j = mid + 1; j <= a[i].second; ++j) printf("%d ", j);
    else
      for (int j = a[i].first; j <= mid; ++j) printf("%d ", j);
  }
  printf("\n");
  fflush(stdout);
}
void solve(bool r) {
  for (int i = 1; i <= n; ++i) cin >> tmp[i];
  for (int i = 1; i <= c; ++i) {
    int mid = a[i].first + a[i].second >> 1;
    int be = r ? mid + 1 : a[i].first;
    int en = r ? a[i].second : mid;
    for (int j = be; j <= en; ++j) ans[j] = min(ans[j], tmp[j]);
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n;
  fill(ans + 1, ans + n + 1, INF);
  c = 1;
  a[1] = pair<int, int>(1, n);
  while (c) {
    ask(0);
    solve(1);
    ask(1);
    solve(0);
    int nc = 0;
    for (int i = 1; i <= c; ++i) {
      int mid = a[i].first + a[i].second >> 1;
      if (mid != a[i].first) b[++nc] = pair<int, int>(a[i].first, mid);
      if (mid + 1 != a[i].second)
        b[++nc] = pair<int, int>(mid + 1, a[i].second);
    }
    c = nc;
    for (int i = 1; i <= c; ++i) a[i] = b[i];
  }
  printf("-1\n");
  for (int i = 1; i <= n; ++i) printf("%d ", ans[i]);
  printf("\n");
  fflush(stdout);
}
