using namespace std;
int n,m,x,y;
int ans[500][500];
int book[500][500];
struct queue{
int x,y,death;
}q[250001];
int move[8][2]={{1,2},{2,1},{-1,2},{-2,1},{2,-1},{-1,-2},{-2,-1},{1,-2}};
void bfs(){
int head=0,tail=0;
q[1].x=x;q[1].y=y;
q[1].death=0;
tail++;
book[y][x]=1;
while(head<tail){
head++;
if( ans[q[head].x][q[head].y] == -1)
ans[q[head].x][q[head].y]=q[head].death;
for(int i=0;i<=7;i++){
int tx=(move[i][0]+q[head].x),ty=(move[i][1]+q[head].y);
if(tx>0 && tx<=n && ty>0 && ty<=m){
if(book[tx][ty]==0){
tail++;
book[tx][ty]=1;
q[tail].x=tx;
q[tail].y=ty;
q[tail].death=q[head].death+1;
}
}
}
}
return;
}
int main(){
cin>>n>>m>>x>>y;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
ans[i][j]=-1;
bfs();
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
printf("%-5d",ans[i][j]);
}
printf("\n");}
}