#include<bits/stdc++.h>
using namespace std;
int n, m;
int hx,hy;
const int N = 410;
int res[N][N];
bool st[N][N];
int cnt = 1e9;
int step[N][N];
int dx[] = {1,2,2,1,-1,-2,-2,-1};
int dy[] = {2,1,-1,-2,-2,-1,1,2};
void dfs(int x,int y,int ansx,int ansy,int ans)
{
if(x<=0||x>n||y<=0||y>m)return;
if(st[x][y])return;
if(ans > cnt)return;
if(x == ansx&&y == ansy)
{
cnt = min(cnt,ans);
return;
}
for(int i =0;i<8;i++)
{
int a = x + dx[i];
int b = y + dy[i];
if(!st[a][b]&&a>0&&a<=n&&b>0&&b<=m)
{
st[x][y] = true;
dfs(a,b,ansx,ansy,ans+1);
st[x][y] = false;
}
}
}
int main()
{
cin>>n>>m;
cin>>hx>>hy;
for(int i =1;i<=n;i++)
for(int j =1;j <=m;j++)
{
cnt = 1e9;
memset(step,1e9,sizeof(step));
dfs(hx,hy,i,j,0);
if(cnt == 1e9)res[i][j] = -1;
else res[i][j] = cnt;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cout<<left<<setw(5)<<res[i][j];
}
cout<<endl;
}
return 0;
}