#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int n,m,a,b,t[512][512];
bool v[512][512]={};
void dfs(int x,int y,int z)
{
if(v[x][y])
{
return;
}
t[x][y]=min(t[x][y],z);
v[x][y]=1;
if((x+2<=n&&y+1<=m)&&v[x+2][y+1]==0)
{
dfs(x+2,y+1,z+1);
}
if((x+2<=n&&y-1>=1)&&v[x+2][y-1]==0)
{
dfs(x+2,y-1,z+1);
}
if((x-2>=1&&y+1<=m)&&v[x-2][y+1]==0)
{
dfs(x-2,y+1,z+1);
}
if((x-2>=0&&y-1>=0)&&v[x-2][y-1]==0)
{
dfs(x-2,y-1,z+1);
}
if((x+1<=n&&y+2<=m)&&v[x+1][y+2]==0)
{
dfs(x+1,y+2,z+1);
}
if((x+1<=n&&y-2>=1)&&v[x+1][y-2]==0)
{
dfs(x+1,y-2,z+1);
}
if((x-1>=1&&y+2<=m)&&v[x-1][y+2]==0)
{
dfs(x-1,y+2,z+1);
}
if((x-1>=1&&y-2>=1)&&v[x-1][y-2]==0)
{
dfs(x-1,y-2,z+1);
}
v[x][y]=0;
return;
}
int main()
{
cin>>n>>m>>a>>b;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if((i+2>n&&i-2<1)&&(j+2>m&&j-2<1))
{
t[i][j]=-1;
continue;
}
t[i][j]=0x3f3f3f;
}
}
dfs(a,b,0);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cout<<t[i][j]<<" ";
}
cout<<endl;
}
return 0;
}