#include <bits/stdc++.h>

using namespace std;

int n = 200;
int freee = n * n;
int A[500][500], S[500][500];

int getmin(int i, int j) {
    int m1 = S[i][j];

    int m2 = S[n-1][n-1];
    if(i > 0) m2 -= S[i-1][n-1];
    if(j > 0) m2 -= S[n-1][j-1];
    if(i > 0 && j > 0) m2 += S[i-1][j-1];
    return min(m1, m2);
}

pair<int, int> rand_lc() {
    int best = -1;
    pair<int, int> ret;

    for(int i=0; i<n; i++)
    for(int j=0; j<n; j++) {
        S[i][j] = (1 - A[i][j]);
        if(i > 0) S[i][j] += S[i-1][j];
        if(j > 0) S[i][j] += S[i][j-1];
        if(i > 0 && j > 0) S[i][j] -= S[i-1][j-1];
    }

    for(int i=0; i<n; i++)
    for(int j=0; j<n; j++) {
        if(A[i][j]) continue;

        int now = getmin(i, j);
        if(best < now)
            best = now, ret = {i, j};
    }

    return ret;
}

int query(pair<int, int> lc) {
    int a;
    cout << lc.first << " " << lc.second << endl;
    cin >> a;
    return a;
}

int main() {

    srand(time(0));

    while(true) {
        auto p = rand_lc();
        int q = query(p);

        if(q == 0) return 0;
        if(q > 0) {
            for(int i=p.first; i<n; i++)
            for(int j=p.second; j<n; j++) {
                if(!A[i][j]) {
                    freee--;
                    A[i][j] = 1;
                }
            }
        } else {
            for(int i=0; i<=p.first; i++)
            for(int j=0; j<=p.second; j++) {
                if(!A[i][j]) {
                    freee--;
                    A[i][j] = 1;
                }
            }
        }
    }

    return 0;
}