#include<bits/stdc++.h>
#pragma GCC optmize(2)
using namespace std;
#define int long long
struct node{int x,y,t;};
queue<node>q;
int n,m,x,y,a[405][405],dx[]={-2,-2,-1,-1,2,2,1,1},dy[]={1,-1,2,-2,1,-1,2,-2};
void bfs(int x,int y){
memset(a,-1,sizeof(a));
q.push({x,y,0});
a[x][y]=0;
while(!q.empty()){
node f=q.front();
q.pop();
for(int i=0;i<=7;i++){
int nx=f.x+dx[i],ny=f.y+dy[i];
if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&a[nx][ny]==-1){
a[nx][ny]=f.t+1;
q.push({nx,ny,f.t+1});
}
}
}
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>m>>x>>y;
bfs(x,y);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)printf("%-5d",a[i][j]);
cout<<endl;
}
return 0;
}