#include <iostream>
using namespace std;

long long int calc(int H, int W, int A, int B, int index, int countA, int countB, int tatami, long long int ans)
{
    if(index == (H*W)) { return ++ans; }
    if (((tatami >> index) & 1) == 1) { return calc(H, W, A, B, index + 1, countA, countB, tatami, ans); }

    int w = index % W;
    int h = index / W;

    if (countB < B) { ans = calc(H, W, A, B, index + 1, countA, countB + 1, tatami | (1 << index), ans); }

    if ( (countA < A) && ((w + 1) < W) && (((tatami >> (index + 1)) & 1) == 0) ) 
    { 
        ans = calc(H, W, A, B, index + 1, countA + 1, countB, tatami | (1 << index) | (1 << (index + 1)), ans);
    }

    if ( (countA < A) && ((h + 1) < H) && (((tatami >> (index + W)) & 1) == 0) )
    {
        ans = calc(H, W, A, B, index + 1, countA + 1, countB, tatami | (1 << index) | (1 << (index + W)), ans);
    }

    return ans;
}

int main()
{
    int H, W, A, B;
    cin >> H >> W >> A >> B;

    cout << calc(H, W, A, B, 0, 0, 0, 0, 0) << endl;
    return 0;
}

// Created by ash_98
 
#include<bits/stdc++.h>
using namespace std;
 
#define mx 200005
#define ll long long
#define mod 1000000007
 
int ar[mx];
char ch[mx];
int n,m,ii,k;

ll dp[(1<<16)+5][9][18];
int vis[(1<<16)+5][9][18];

int Set(int N,int pos)
{
    return N=N|(1<<pos);
}

int Reset(int N,int pos)
{
    return N=N & ~(1<<pos);
}

bool chk(int N,int pos)
{
    return (bool)(N &(1<<pos));
}

ll func(int mask,int koy,int ID)
{
	if(koy==k)return 1;
	if(koy>k)return 0;

	if(vis[mask][koy][ID])return dp[mask][koy][ID];
	vis[mask][koy][ID]=1;
	ll re=0;


	for(int r=1;r<=n;r++)
	{
      for(int c=1;c<=m;c++)
      {

			int id=(r-1)*m+c-1;
			if(id+1<=ID)continue;

		    if(!chk(mask,id))
		    {
		        if(c+1<=m && !chk(mask,id+1))
		        {
					int nmask=Set(mask,id);
					nmask=Set(nmask,id+1);
					re+=func(nmask,koy+1,id+1);
			    }
			    if(r+1<=n && !chk(mask,id+m))
			    {
			    	int nmask=Set(mask,id);
					nmask=Set(nmask,id+m);
					re+=func(nmask,koy+1,id+1);
			    }
		    }

		}
	}
		
	return dp[mask][koy][ID]=re;
}
 
void solve()
{
	scanf("%d%d%d%d",&n,&m,&k,&ii);
	printf("%lld\n",func(0,0,0));
}
 
int main()
{
	int t=1;
	//scanf("%d",&t);
	while(t--)solve();
	return 0;
}