#include <bits/stdc++.h>
#define mp make_pair
#define inf 1<<30
using namespace std;
queue<pair<pair<int,int>,int> > q;
int dx[8] = {1,1,2,2,-1,-1,-2,-2};
int dy[8] = {2,-2,1,-1,2,-2,1,-1};
int ma[1010][1010];
int n,m,x,y;
void bfs(){
while(!q.empty()){
int x = q.front().first.first;
int y = q.front().first.second;
int val = q.front().second;
q.pop();
for(int i = 0;i<8;i++){
if(x+dx[i]<=n and x+dx[i]>0 and y+dy[i]<=m and dy[i]+y>0 and val+1<ma[x+dx[i]][y+dy[i]]){
ma[x+dx[i]][y+dy[i]] = val+1;
q.push(mp(mp(x+dx[i],y+dy[i]),val+1));
}
}
}
}
int main(){
for(int i = 1;i<=1000;i++){
for(int j = 1;j<=1000;j++) ma[i][j] = inf;
}
scanf("%d%d%d%d",&n,&m,&x,&y);
q.push(mp(mp(x,y),0));
ma[x][y] = 0;
bfs();
for(int i = 1;i<=n;i++){
for(int j = 1;j<=m;j++){
if(ma[i][j]!=(inf))printf("%-5d",ma[i][j]);
else printf("%-5d",-1);
}
printf("\n");
}
return 0;
}