#include<stdio.h>
int qipan[401][401];
int dx[8]={2,2,1,-1,-2,-2,1,-1};
int dy[8]={1,-1,2,2,1,-1,-2,-2};
struct queue
{
int x,y;
}a[160000];
void bfs(int i,int j)
{
int head=1,tail=2;
int c,nx,ny;
a[2].x =i;
a[2].y =j;
qipan[i][j]=0;
while(head<tail){
head++;
for(c=0;c<8;c++){
nx=a[head].x +dx[c];
ny=a[head].y +dy[c];
printf("%d %d\n",nx,ny);
if(nx>=1 && nx<=i && (qipan[nx][ny]==-1) && ny>=1 &&ny<=j){
tail++;
qipan[nx][ny]=qipan[head][head]+1;
a[tail].x =nx;
a[tail].y =ny;
}
}
}
}
int main(void)
{
int m,n,x,y;
scanf("%d %d %d %d",&n,&m,&x,&y);
int a,b;
for(a=1;a<=n;a++){
for(b=1;b<=m;b++){
qipan[a][b]=-1;
}
}
bfs(x,y);
for(a=1;a<=n;a++){
for(b=1;b<=m;b++){
printf("%-5d",qipan[a][b]);
}
printf("\n");
}
return 0;
}