#include<bits/stdc++.h>
using namespace std;
int n,m,x,y;
int ans[405][405];
bool vis[405][405];
const int dx[]={1,2,1,2,-1,-2,-1,-2};
const int dy[]={2,1,-2,-1,2,1,-2,-1};
bool is_in(int x,int y){
return x>=1&&x<=n&&y>=1&&y<=m;
}
void dfs(int x,int y,int step){
if(ans[x][y]!=-1&&x!=1&&y!=1){
if(step>=ans[x][y]){
return;
}
}
if(vis[x][y])return;
vis[x][y]=1;
if(ans[x][y]==-1)ans[x][y]=step;
else ans[x][y]=min(step,ans[x][y]);
for(int i=0;i<8;++i){
int xx=x+dx[i];
int yy=y+dy[i];
if(is_in(xx,yy)){
dfs(xx,yy,step+1);
}
}
vis[x][y]=0;
}
int main(){
memset(vis,0,sizeof(vis));
memset(ans,-1,sizeof(ans));
cin>>n>>m>>x>>y;
ans[x][y]=0;
dfs(x,y,0);
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
printf("%-5d",ans[i][j]);
}
cout<<endl;
}
return 0;
}