#include<iostream>
#include<iomanip>
#include<queue>
#include<cstring>
using namespace std;
const int MAXN=400+10;
int map[MAXN][MAXN],n,m,sx,sy;
int dx[9]={0,-2,-1,1,2,2,1,-1,-2},
dy[9]={0,1,2,2,1,-1,-2,-2,-1};
queue<int> q1,q2,q3;
int main(){
cin>>n>>m>>sx>>sy;
for(int i=0;i<=n;i++){
for(int j=0;j<=m;j++){
map[i][j]=-1;
}
}
q1.push(sx);
q2.push(sy);
q3.push(0);
while(!q3.empty()){
int x=q1.front(),y=q2.front(),s=q3.front();
q1.pop(),q2.pop(),q3.pop();
map[x][y]=s;
for(int i=1;i<=8;i++){
int tx=x+dx[i];
int ty=y+dy[i];
if(tx>0&&tx<=n&&ty>0&&ty<=m&&map[tx][ty]==-1){
q1.push(tx);
q2.push(ty);
q3.push(s+1);
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<setw(5)<<left<<map[i][j];
}
cout<<endl;
}
return 0;
}