#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct point
{
int x,y;
}a[200000];
int n,m;
ll mp[405][405];
int z[8][2]={
2,1,
2,-1,
1,2,
1,-2,
-1,2,
-1,-2,
-2,1,
-2,-1
};
queue<point> b;
inline bool judge(int x,int y)
{
if(x<1||y<1||x>n||y>m)
return false;
return true;
}
int main()
{
int x,y;
cin>>n>>m>>x>>y;
b.push(point{x,y});
memset(mp,-1,sizeof(mp));
mp[1][1]=0;;
while(!b.empty())
{
point k=b.front();
b.pop();
for(int i=0;i<8;i++)
{
if(judge(k.x+z[i][0],k.y+z[i][1])&&mp[k.x+z[i][0]][k.y+z[i][1]]==-1)
{
b.push(point{k.x+z[i][0],k.y+z[i][1]});
mp[k.x+z[i][0]][k.y+z[i][1]]=mp[k.x][k.y]+1;
}
}
}for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
printf("%-5lld",mp[i][j]);
}printf("\n");
}
}