#include <iostream>
using namespace std;
int map[21][21];
int xz[9]={0,1,2,2,1,-1,-2,-2,-1};
int yz[9]={0,-2,-1,1,2,-2,-1,1,2};
int posx,posy;
bool iscon(int x,int y){
bool flag=false;
for(int i=1;i<=9;i++){
if(posx+xz[i]==x&&posy+yz[i]==y){
flag=true;
}
}
return flag;
}
int main(){
int m,n;
cin>>m>>n;
cin>>posx>>posy;
//posx--;posy--;
for(int i=0;i<21;i++){
if(iscon(0,i)==false){map[0][i]=1;}else{break;}//cuz no way back up
//if(iscon(i,0)==false){map[i][0]=1;}else{break;}
}
for(int i=0;i<21;i++){
//if(iscon(0,i)==false){map[0][i]=1;}else{break;}//cuz no way back up
if(iscon(i,0)==false){map[i][0]=1;}else{break;}
}
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
if(iscon(i,j)==false){
map[i][j]=map[i-1][j]+map[i][j-1];
}
}
}
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cout<<map[i][j]<<" ";
}
cout<<endl;
}
cout<<1617;
return 0;
}