#include<cstdio>
#include<bitset>
#include<vector>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<map>
#include<set>
#include<queue>
#include<algorithm>

using namespace std;

int N, M, ap[209][209], val[209][209], s[209][209];
clock_t t1, t2;

int Ask (int i, int j)
{
    int ans;
    printf ("%d %d\n", i - 1, j - 1);
    fflush (stdout);
    scanf ("%d", &ans);
    fflush (stdout);
    if (ans == 0) exit (0);
    return ans;
}

int main()
{
//freopen ("input", "r", stdin);
//freopen ("output", "w", stdout);

///scanf ("%d %d", &N, &M);fflush (stdout);
//N = M = 200;
N = M = 200;
t1 = clock ();
while (1)
{
    t2 = clock ();
    if ((double) (t2 - t1) / CLOCKS_PER_SEC > 6.5) break;
    for (int i=1; i<=N; i++)
        for (int j=1; j<=M; j++)
            s[i][j] = s[i-1][j]+s[i][j-1]-s[i-1][j-1]+(1-ap[i][j]);
    int bst = 0, x, y;
    for (int i=1; i<=N; i++)
        for (int j=1; j<=M; j++)
        if (ap[i][j] == 0)
        {
            int curr = s[i][j], curr2 = s[N][M] - s[i - 1][M] - s[N][j - 1] + s[i - 1][j - 1];
            if (curr2 < curr) curr = curr2;
            if (curr > bst) bst = curr, x = i, y = j;
        }
    int val = Ask (x, y);
    if (val == 0) return 0;
    if (val > 0)
    {
        for (int i=x; i<=N; i++)
            for (int j=y; j<=M; j++)
                ap[i][j] = 1;
    }
    else
    {
        for (int i=1; i<=x; i++)
            for (int j=1; j<=y; j++)
                ap[i][j] = 1;
    }
}

for (int i=1; i<=200; i++)
    for (int j=1; j<=200; j++)
        if (ap[i][j] == 0)
        {
            int val = Ask (i, j);
            if (val == 0) return 0;
        }

return 0;
}