#include <cstdio>
#include <algorithm>
using namespace std;
int a[200][200],b[200];
void fills(int x, int y) {
  int z=a[x][y];
  for (int i=x; i>=0 && (i==x || a[i][y]==0); i--)
    for (int j=y; j>=0 && ((i==x && j==y) || a[i][j]==0); j--) a[i][j]=z;
}
void fillt(int x, int y) {
  int z=a[x][y];
  for (int i=x; i<200 && (i==x || a[i][y]==0); i++)
    for (int j=y; j<200 && ((i==x && j==y) || a[i][j]==0); j++) a[i][j]=z;
}
void fnd(int x, int y) {
  printf("%d %d\n",x,y);
  fflush(stdout);
  scanf("%d",&a[x][y]);
}
bool solve(int x) {
  int l=0,r=199;
  while (l<r) {
    int h=(l+r)/2;
    if (a[x][h]==0) fnd(x,h);
    if (a[x][h]==0) return true;
    if (a[x][h]<0) {
      fills(x,h);
      l=h+1;
    } else {
      fillt(x,h);
      r=h-1;
    }
  }
  if (r>=0 && r<200 && a[x][r]==0) {
    fnd(x,r);
    if (a[x][r]==0) return true;
    if (a[x][r]<0) fills(x,r); else fillt(x,r);
  }
  return false;
}
int main() {
  srand(77);
  for (int i=0; i<200; i++) b[i]=i;
  random_shuffle(b,b+200);
  for (int i=0; i<200; i++) if (solve(b[i])) break;
  return 0;
}