#include <bits/stdc++.h>
using namespace std;
int n,m;
int minm;
int a[20][20];
int b[20][20];
void dfs(int bx,int by,int st,int ex,int ey){
if(bx==ex&&by==ey){
if(minm>st){
minm=st;
return;
}
return;
}
if(a[bx-2][by+1]==1&&b[bx-2][by+1]==0){
b[bx-2][by+1]=1;
dfs(bx-2,by+1,st+1,ex,ey);
b[bx-2][by+1]=0;
}
if(a[bx-1][by+2]==1&&b[bx-1][by+2]==0){
b[bx-1][by+2]=1;
dfs(bx-1,by+2,st+1,ex,ey);
b[bx-1][by+2]=0;
}
if(a[bx+1][by+2]==1&&b[bx+1][by+2]==0){
b[bx+1][by+2]=1;
dfs(bx+1,by+2,st+1,ex,ey);
b[bx+1][by+2]=0;
}
if(a[bx+2][by+1]==1&&b[bx+2][by+1]==0){
b[bx+2][by+1]=1;
dfs(bx+2,by+1,st+1,ex,ey);
b[bx+2][by+1]=0;
}
if(a[bx+2][by-1]==1&&b[bx+2][by-1]==0){
b[bx+2][by-1]=1;
dfs(bx+2,by-1,st+1,ex,ey);
b[bx+2][by-1]=0;
}
if(a[bx+1][by-2]==1&&b[bx+1][by-2]==0){
b[bx+1][by-2]=1;
dfs(bx+1,by-2,st+1,ex,ey);
b[bx+1][by-2]=0;
}
if(a[bx-1][by-2]==1&&b[bx-1][by-2]==0){
b[bx-1][by-2]=1;
dfs(bx-1,by-2,st+1,ex,ey);
b[bx-1][by-2]=0;
}
if(a[bx-2][by-1]==1&&b[bx-2][by-1]==0){
b[bx-2][by-1]=1;
dfs(bx-2,by-1,st+1,ex,ey);
b[bx-2][by-1]=0;
}
}
int main(){
int x,y;
cin>>n>>m>>x>>y;
for(int i = 1 ; i<=n ;i++){
for(int j = 1 ; j<=m ;j++){
a[i][j]=1;
}
}
b[x][y]=1;
for(int i = 1 ; i<=n ;i++){
for(int j =1 ; j<=m ;j++){
minm=9999;
dfs(x,y,0,i,j);
if(minm<9999){
cout<<minm<<" ";
}else{
cout<<"-1"<<" ";
}
}
cout<<endl;
}
}