#include<cstdio>
#include<algorithm>
using namespace std;

int n,a[605][605];

void work()
{
	int d,l=1;
	scanf("%d",&d);
	for(; d%4==0; d>>=2)
		l<<=1;
	if(~d&1)
	{
		for(int i=1; i<=n; i+=l)
			if(!(i/l&1))
				for(int k=i; k<=min(n,i+l-1); ++k)
					for(int j=1; j<=n; j++)
						a[k][j]++;
	}
	else if(d%4==1)
	{
		for(int i=1; i<=n; i+=l)
			for(int j=1; j<=n; j+=l)
				if((i/l&1)^(j/l&1)^1)
					for(int k=i; k<=min(n,i+l-1); ++k)
						for(int p=j; p<=min(n,j+l-1); ++p)
							a[k][p]++;
	}
	else
	{
		for(int i=1; i<=n; i++)
			for(int j=1; j<=n; j++)
				a[i][j]++;
	}
}

int main()
{
	scanf("%d",&n);
	n<<=1;
	work(); work();
/*	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=n; j++)
			printf("%d ",a[i][j]);
		puts("");
	}*/
	for(int s=0,i=1; i<=n; i++)
		for(int j=1; j<=n; j++)
			if(a[i][j]==2)
			{
				++s;
				printf("%d %d\n",i-1,j-1);
				if(s*4==n*n)
					return 0;
			}
	return 0;
}
#include<bits/stdc++.h>
#define eps 1e-7
using namespace std;
int n,d1,d2,cnt=0;
bool f[1005][1005];
inline void solve(int d){
	int b=0;
	while(!(d%4))d>>=2,++b;
	if(d&1){
		for(int i=0;i<(n<<1);++i)
			for(int j=0;j<(n<<1);++j)
				if(((i>>b)+(j>>b))&1)f[i][j]=true;
		return;
	}
	for(int i=0;i<(n<<1);++i)
		for(int j=0;j<(n<<1);++j)
			if((i>>b)&1)f[i][j]=true;
}
int main(){
	scanf("%d%d%d",&n,&d1,&d2);
	solve(d1),solve(d2);
	for(int i=0;i<(n<<1);++i)
		for(int j=0;j<(n<<1);++j)
			if(cnt<n*n&&!f[i][j])printf("%d %d\n",i,j),++cnt;
	return 0;
}