/**
 *    author:  enot.1.10, Vladimir Smykalov (enot.1.10@gmail.com)
 *    created: 12.02.2016 20:05:24       
**/
#define __USE_MINGW_ANSI_STDIO 0
#include <bits/stdc++.h>

#define F first
#define S second
#define pb push_back
#define mp make_pair
#define forn(i, n) for(int i = 0 ; (i) < (n) ; ++i)
#define eprintf(...) fprintf(stderr, __VA_ARGS__),fflush(stderr)
#define sz(a) ((int)(a).size())
#define all(a) (a).begin(),a.end()
#define pw(x) (1LL<<(x))

using namespace std;

typedef long long ll;
typedef double dbl;
typedef vector<int> vi;
typedef pair<int, int> pi;

const int inf = (int)1.01e9;
const dbl eps = 1e-9;

/* --- main part --- */

#define TASK "1"

const int maxn = 210;

int a[maxn][maxn];
int N = 200;

pi getMove()
{
    int score = 0;
    int xx = -1, yy = -1;
    forn(i, N) forn(j, N)
    {
        int val1 = 0;
        forn(i2, i + 1) forn(j2, j + 1) if (a[i2][j2] == 0) val1++;
        int val2 = 0;
        for (int i2 = i; i2 < N; ++i2) for (int j2 = j; j2 < N; ++j2) if (a[i2][j2] == 0) val2++;
        int val = min(val1, val2);
        if (val > score)
        {
            score = val;
            xx = i, yy = j;
        }
    }
    return mp(xx, yy);
}

int main()
{
    while (1)
    {
        pi t = getMove();
        printf("%d %d\n", t.F, t.S);
        fflush(stdout);
        int x;
        scanf("%d", &x);        
        if (x == 0) break;
        if (x > 0)
        {
            for (int i = t.F; i < N; ++i) for (int j = t.S; j < N; ++j) a[i][j] = 1;
        }
        else
        {
            for (int i = 0; i <= t.F; ++i) for (int j = 0; j <= t.S; ++j) a[i][j] = 1;
        }
    }
    #ifdef home
        eprintf("Time: %d ms\n", (int)(clock() * 1000. / CLOCKS_PER_SEC));
    #endif
    return 0;
}