#include <bits/stdc++.h>
using namespace std;

int a[205][205];
int xac,yac,hac,x,y,stx,drx=200,sty,dry=200,xnou,ynou;
queue <int> cox;
queue <int> coy;
int dx[]={-1,0,1,0};
int dy[]={0,-1,0,1};

bool valid (int X , int Y)
{
    if (X>=0 && X<=200 && Y>=0 && Y<=200)
     return 1;
    return 0;
}

int main()
{
    cout<<"0 0"<<'\n';
    cout.flush();
    cin>>hac;
    a[0][0]=hac;

    if (!hac)
     return 0;

    cout<<"200 200"<<'\n';
    cout.flush();
    cin>>hac;
    a[200][200]=hac;

    if (!hac)
     return 0;

    while (hac && stx<drx && sty<dry)
    {
        x=(stx+drx)/2;
        y=(sty+dry)/2;
        cout<<x<<" "<<y<<'\n';
        cout.flush();
        cin>>hac;
        a[x][y]=hac;

        if (!hac)
         return 0;

        if (hac>0)
        {
           drx=x;
           dry=y;
        }

        if (hac<0)
        {
            stx=x;
            sty=y;
        }
    }

    x=(stx+drx)/2;
    y=(sty+dry)/2;

    if (!a[x][y])
    {
        cout<<x<<" "<<y<<'\n';
        cout.flush();
        cin>>hac;
        a[x][y]=hac;

        if (!hac)
         return 0;
    }

    cox.push(x);
    coy.push(y);

    while (!cox.empty())
    {
        x=cox.front();
        y=coy.front();
        cox.pop();
        coy.pop();

        for (int i=0;i<4;i++)
        {
            xnou=x+dx[i];
            ynou=y+dy[i];

            if (valid(xnou,ynou) && !a[xnou][ynou])
            {
                cout<<xnou<<" "<<ynou<<'\n';
                cout.flush();
                cin>>hac;
                if (!hac)
                 return 0;

                a[xnou][ynou]=hac;
                cox.push(xnou);
                coy.push(ynou);
            }
        }
    }

    return 0;
}