#include<cstdio>
#include<cstring>
int n,m;
int f[1000][1000];
bool vis[1000][1000];
int nxtx[8]={2,-2,2,-2,-1,1,-1,1};
int nxty[8]={1,1,-1,-1,2,2,-2,-2};
void dfs(int x,int y,int step)
{
if(step>=f[x][y]) return ;
f[x][y]=step;
for(int i=0;i<8;i++)
{
int nx=x+nxtx[i];
int ny=y+nxty[i];
if(nx<1||ny<1||nx>n||ny>m) continue;
if(vis[nx][ny]) continue;
dfs(nx,ny,step+1);
}
}
int main()
{
memset(f,0x3f3f3f3f,sizeof(f));
int x,y;
scanf("%d%d%d%d",&n,&m,&x,&y);
dfs(x,y,0);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(f[i][j]==0x3f3f3f3f) f[i][j]=-1;
printf("%-5d",f[i][j]);
}
printf("\n");
}
return 0;
}