#include<iostream>
#include<fstream>
#include<stdlib.h>
using namespace std;
int n=200,t[205][205],x,y,v;
int k[]={-1,0, 0,1, 1,0, 0,-1};
int kovx[30000];
int kovy[30000],db,i;
bool fal[205][205];
void init()
{
	int i;
	for(i=0;i<=n+1;++i)
	{
		fal[i][0]=1;
		fal[i][n+1]=1;
		fal[0][i]=1;
		fal[n+1][i]=1;
	}
}
void kiir()
{
	ofstream g("out.txt");
	int i,j;
	for(i=0;i<n+2;++i)
	{
		for(j=0;j<n+2;++j)
			g<<t[i][j]<<" ";
		g<<"\n";
	}
	g.close();
}
void min(int &x,int &y)
{
	int i,j,min=1000000;
	for(i=1;i<=n;++i)
	{
		for(j=1;j<=n;++j)
			if(t[i][j]!=0&&abs(t[i][j])<min)
			{
				min=t[i][j];
				x=i;
				y=j;
			}
	}

	x=x+1-1;
}
void min2(int &x,int &y,int a,int b)
{
	int i,j,min=1000000;
	for(i=1;i<=n;++i)
		for(j=1;j<=n;++j)
			if(t[i][j]!=0&&abs(t[i][j])<min&&(i!=a||j!=b))
			{
				min=t[i][j];
				x=i;
				y=j;
			}
	x=x+1-1;
}
bool tal;
int x2,y2;
void megy(int x,int y)
{
	for(i=0;i<8;i+=2)
		if(!fal[x+k[i]][y+k[i+1]]&&t[x+k[i]][y+k[i+1]]==0)
		{
			x2=x+k[i];
			y2=y+k[i+1];
			tal=1;
			return;
		}

	for(i=0;i<8;i+=2)
		if(!fal[x+k[i]][y+k[i+1]])
		{
			kovx[db]=x+k[i];
			kovy[db++]=y+k[i+1];
		}
}
void legkoz(int &x,int &y)
{
	tal=0;
	db=1;
	kovx[0]=x;
	kovy[0]=y;
	int i=0;
	while(i<db&&!tal)
	{
		megy(kovx[i],kovy[i]);
		++i;
	}
	x=x2;
	y=y2;
}
void fel()
{
	x=0;
	y=0;
	cout<<x<<" "<<y<<"\n";
	cout.flush();
	cin>>v;
	t[x+1][y+1]=v;
	if(v!=0)
	{
		x=1;
		y=1;
		cout<<x<<" "<<y<<"\n";
		cout.flush();
		cin>>v;
		t[x+1][y+1]=v;
	}
	int a,b,c,d;
	while(v!=0){
		//kiir();
		min(a,b);
		//min2(c,d,a,b);

		/*x=a+a-c;
		y=b+b-d;
		if(x<1)
			x=1;
		if(y<1)
			y=1;
		if(x>200)
			x=200;
		if(y>200)
			y=200;*/
		x=a;
		y=b;
		if(t[x][y]!=0)
			legkoz(x,y);
	
		cout<<x-1<<" "<<y-1<<"\n";
		cout.flush();
		cin>>v;
		t[x][y]=v;
	}
}
int main()
{
	init();
	fel();
    return 0;
}