/***************************************************
 * Alex Palcuie
 * Romania - 2016
 * alex [dot] palcuie [at] gmail [dot] com
 * http://blog.palcu.ro/
****************************************************/

#include <algorithm>
#include <bitset>
#include <climits>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <fstream>
#include <iostream>
#include <iterator>
#include <limits>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>

using namespace std;

const int N = 128;
const int INF = 0x3f3f3f3f;

int m[N][N];

int main() {
    int x = 0, y = 0;
    cout << "0 0\n"; cout.flush();
    cin >> m[0][0];
    if (m[0][0] == 0)
        return 0;

    while (true) {
        cout << x+1 << " " << y << "\n"; cout.flush();
        cin >> m[x+1][y];

        if (m[x+1][y] == 0)
            return 0;
        else if (m[x+1][y] > 0) {
            while (true) {
                cout <<  x << " "  << y+1 << "\n"; cout.flush();
                cin >> m[x][y+1];
                if (m[x][y+1] == 0)
                    return 0;
                y++;
            }
        }

        cout << x << " " << y+1 << "\n"; cout.flush();
        cin >> m[x][y+1];

        if (m[x][y+1] == 0)
            return 0;
        else if (m[x][y+1] > 0) {
            while (true) {
                x++;
                cout << x << " " << y << "\n"; cout.flush();
                cin >> m[x][y];
                if (m[x][y] == 0)
                    return 0;
            }
        }

        if (m[x+1][y] > m[x][y+1])
            x++;
        else
            y++;
    }
    return 0;
}