#include<bits/stdc++.h>
using namespace std;
int sx,sy,n,m;
int a[401][401] = {-1};
int vis[401][401];
int dx[9] = {1,-1,1,-1,-2,-2,2,2};
int dy[9] = {-2,-2,2,2,1,-1,1,-1};
struct node{
int x;
int y;
};
queue <node> q;
void bfs(){
q.push(node{sx,sy});
while (!q.empty()){
for (int i = 0;i < 8;i++){
int xx = q.front().x+dx[i];
int yy = q.front().y+dy[i];
if (xx >= 1 && xx <= n && yy >= 1 && yy <= m && vis[xx][yy] != 1){
vis[xx][yy] = 1;
a[xx][yy] = a[q.front().x][q.front().y] + 1;
q.push(node{xx,yy});
}
}
q.pop();
}
}
int main(){
cin>>m>>n>>sx>>sy;
vis[sx][sy] = 1;
memset(a,-1,sizeof(a));
a[sx][sy] = 0;
bfs();
for (int i = 1;i <= n;i++){
for (int j = 1;j <= m;j++){
printf("%-5d",a[i][j]);
}
cout<<endl;
}
}