#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define ld long double
#define pi (3.141592653589)
#define pb push_back
#define mp make_pair
#define INF 1000000000000000000
#define MOD 1000000007
#define vll vector<ll>
#define vpll vector<pair<ll,ll> >
#define pll pair<ll , ll>
#define ff first
#define ss second
#define mMul(a , b , m) (a * b) % m
#define mSub(a , b , m) (a - b + m) % m
#define mAdd(a , b , m) (a + b) % m
ll dp[62][62];
string fun(ll i,ll j,ll k)
{
    if(i==0)
    {
        string s;
        while(j--)
        s.pb('b');
        return s;
    }
    if(j==0)
    {
        string s;
        while(i--)
        s.pb('a');
        return s;
    }
    ll cn=dp[i+j-1][j];
    if(cn>=k)
    return 'a'+fun(i-1,j,k);
    else
    return 'b'+fun(i,j-1,k-dp[i+j-1][j]);
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
for(ll j=0;j<=60;j++)
dp[0][j]=0;
for(ll j=1;j<=60;j++)
dp[j][0]=1;
for(ll j=1;j<=60;j++)
{
    for(ll k=1;k<=60;k++)
    {
        if(k>j)
        dp[j][k]=0;
        else if(k==j)
        dp[j][k]=1;
        else
        dp[j][k]=dp[j-1][k]+dp[j-1][k-1];
    }
}
ll x,y,k;
cin>>x>>y>>k;
cout<<fun(x,y,k)<<"\n";
return 0;
}

#include<bits/stdc++.h>

using namespace std;

int H,W,A,B;
int tatami[16][16];

int dfs(int y,int x){
    //cout<<x<<","<<y<<endl;
    if(y>=H){
        if(A==0&&B==0) return 1;
        return 0;
    }
    int nx=x+1;
    int ny=y;
    if(nx>=W){
        nx=0;
        ny++;
    }
    int ans=0;
    if(tatami[y][x]==1){
        return dfs(ny,nx);
    }
    tatami[y][x]=1;
    B--;
    if(B>=0) ans+=dfs(ny,nx);
    B++;
    A--;
    if(A>=0&&y!=H-1&&tatami[y+1][x]==0){
        tatami[y+1][x]=1;
        ans+=dfs(ny,nx);
        tatami[y+1][x]=0;
    }
    if(A>=0&&x!=W-1&&tatami[y][x+1]==0){
        tatami[y][x+1]=1;
        ans+=dfs(ny,nx);
        tatami[y][x+1]=0;
    }
    A++;
    tatami[y][x]=0;
    return ans;
}

int main(){
    cin>>H>>W>>A>>B;
    cout<<dfs(0,0)<<endl;
}