#include <bits/stdc++.h>
using namespace std;
int D = 1e8, t;
set<int> x, y, z;
int q(int x, int y) {
  printf("0 %d %d\n", x, y);
  fflush(stdout);
  cin >> x;
  return x;
}
void c(int L, int R) {
  if (R - L < 2) return;
  int M = (L + R) / 2, d = q(M, M);
  if (M + d < R && !q(M + d, M + d)) z.insert(M + d);
  if (M - d > L && !q(M - d, M - d)) z.insert(M - d);
  c(L, M - d), c(M + d, R);
}
int main() {
  c(-D - 1, D + 1);
  for (; z.count(t); t++)
    ;
  for (auto r : z) {
    if (!q(r, t)) x.insert(r);
    if (!q(t, r)) y.insert(r);
  }
  printf("1 %d %d\n", x.size(), y.size());
  for (auto r : x) cout << r << endl;
  for (auto r : y) cout << r << endl;
  return 0;
}
