#include <bits/stdc++.h>
using namespace std;
int const INF = (int)1e9 + 1e3;
long long const INFL = (long long)1e18 + 1e6;
mt19937 tw(9450189);
uniform_int_distribution<long long> ll_distr;
long long rnd(long long a, long long b) {
  return ll_distr(tw) % (b - a + 1) + a;
}
const long long MAXV = 10004205361450474;
vector<long long> req;
long long rec(long long l, int q, bool flag = false) {
  if (q == 1) {
    if (flag) {
      int ops = min(l, 10000ll);
      for (int i = 0; i < ops; ++i) {
        req.push_back(l + i);
      }
    }
    return min(l, 10000ll);
  }
  long long last = l;
  int ops = min(l, 10000ll);
  for (int i = 0; i <= ops; ++i) {
    long long tmp = rec(last, q - 1);
    if (flag && i) {
      req.push_back(last - 1);
    }
    last += tmp + 1;
    if (last > MAXV + 5) {
      last = MAXV + 5;
      break;
    }
  }
  --last;
  return last - l;
}
int cnt = 0;
int ask(vector<long long> v) {
  while (((int)v.size()) && v.back() > MAXV) {
    v.pop_back();
  }
  cout << ((int)v.size()) << " ";
  for (auto num : v) {
    cout << num << " ";
  }
  cout << endl;
  int res;
  cin >> res;
  if (res < 0) {
    exit(0);
  }
  return res;
}
void solve() {
  long long part1 = rec(1, 4);
  int res = ask({part1 + 1});
  long long l = 0, r = 0;
  if (res == 0) {
    l = 1, r = part1;
  } else {
    l = part1 + 2, r = MAXV;
  }
  int k = 4;
  while (true) {
    req.clear();
    if (k < 4 || l != part1 + 2) {
      rec(l, k, true);
    } else {
      long long qwe = rec(l, k - 1);
      long long last = l;
      for (int i = 0; i <= 10000; ++i) {
        if (i) {
          req.push_back(last - 1);
        }
        last += qwe + 1;
        if (last > MAXV + 5) {
          last = MAXV + 5;
          break;
        }
      }
      --last;
    }
    int res = ask(req);
    if (res) {
      l = req[res - 1] + 1;
    }
    if (res < ((int)req.size())) {
      r = req[res] - 1;
    }
    --k;
  }
}
int main() {
  cout << setprecision(15) << fixed;
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int test_count = 1;
  for (int test = 1; test <= test_count; ++test) {
    solve();
  }
}
