#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
struct point
{
int x,y;
};
int sx=1,sy=1,ex,ey,m[1000][1000],b[1000][1000];
queue <point>t;
int main()
{
int n,m2,v=0;cin>>n>>m2;
cin>>sx>>sy;
for(int i=1;i<=n;i++){
for(int j=1;j<=m2;j++){
m[i][j]=-1;
}
}
point now,tmp;
now.x=sx,now.y=sy,m[now.x][now.y]=0;
t.push(now);
int aa[8][2]={{1,2},{2,1},{-1,2},{2,-1},{1,-2},{-2,1},{-1,-2},{-2,-1}};
while(t.size()!=0){
now=t.front();
t.pop();
for(int i=0;i<8;i++){
tmp.x=now.x+aa[i][0];
tmp.y=now.y+aa[i][1];
if(tmp.x>=1&&tmp.x<=n&&tmp.y>=1&&tmp.y<=m2&&m[tmp.x][tmp.y]==-1){
m[tmp.x][tmp.y]=m[now.x][now.y]+1;
t.push(tmp);
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m2;j++){
printf("%-5d",m[i][j]);
}
cout<<endl;
}
return 0;
}