#include <bits/stdc++.h>
using namespace std;
const long long M = 10004205361450475ll;
const long long N = 204761410474ll;
const long long NN = 20468427;
long long a[10001], n, p, o, b[10];
void qry(long long L, long long R) {
  long long d = (R - L) / 10001;
  a[0] = L;
  for (long long i = 1; i <= 10001; i++) a[i] = a[i - 1] + d;
  printf("10000");
  for (long long i = 1; i <= 10000; i++) printf(" %I64d", a[i]);
  printf("\n");
  fflush(stdout);
  cin >> o;
  if (o == -1)
    exit(0);
  else
    qry(a[o], a[o + 1]);
}
int main() {
  printf("1 %I64d\n", N);
  fflush(stdout);
  cin >> o;
  if (o == -1)
    exit(0);
  else if (o) {
    qry(N, M);
  } else {
    printf("1 2046\n");
    fflush(stdout);
    cin >> o;
    if (o == -1)
      exit(0);
    else if (!o) {
      printf("1 6\n");
      fflush(stdout);
      cin >> o;
      if (o == -1)
        exit(0);
      else if (o) {
        b[0] = 6;
        for (long long i = 1; i <= 8; i++) b[i] = b[i - 1] * 2 + 2;
        printf("7");
        for (long long i = 1; i <= 7; i++) printf(" %I64d", b[i]);
        printf("\n");
        fflush(stdout);
        cin >> o;
        if (o == -1) exit(0);
        printf("%I64d", b[o + 1] - b[o] - 1);
        for (long long i = b[o] + 1; i < b[o + 1]; i++) printf(" %I64d", i);
        printf("\n");
        fflush(stdout);
        cin >> o;
        return 0;
      } else {
        printf("1 2\n");
        fflush(stdout);
        cin >> o;
        if (o == -1)
          exit(0);
        else if (o)
          printf("3 3 4 5\n");
        else
          printf("1 1\n");
        fflush(stdout);
        cin >> o;
        return 0;
      }
    } else {
      a[2048] = N;
      long long d = 10001 * 10001;
      for (long long i = 2047; i; i--) a[i] = a[i + 1] - d;
      printf("2047");
      for (long long i = 1; i <= 2047; i++) printf(" %I64d", a[i]);
      printf("\n");
      fflush(stdout);
      cin >> o;
      if (o == -1) exit(0);
      if (o)
        qry(a[o], a[o + 1]);
      else {
        a[2048] = NN;
        long long d = 10001;
        for (long long i = 2047; i > 2; i--) a[i] = a[i + 1] - d;
        a[0] = 2046;
        for (long long i = 1; i < 3; i++) a[i] = a[i - 1] * 2 + 2;
        printf("2047");
        for (long long i = 1; i <= 2047; i++) printf(" %I64d", a[i]);
        printf("\n");
        fflush(stdout);
        cin >> o;
        if (o == -1)
          exit(0);
        else {
          printf("%I64d", a[o + 1] - a[o] - 1);
          for (long long i = a[o] + 1; i < a[o + 1]; i++) printf(" %I64d", i);
          printf("\n");
          fflush(stdout);
          cin >> o;
          return 0;
        }
      }
    }
  }
  return 0;
}
