#include<iostream>
using namespace std;
int H,W,A;
int dp[17][1<<16][9];
main()
{
	cin>>H>>W>>A;
	dp[0][0][A]=1;
	for(int i=0;i<H;i++)for(int j=0;j<=W;j++)for(int k=0;k<1<<W;k++)
	{
		int t=(1<<W)-k-1;
		if(j==W)
		{
			int a=__builtin_popcount(t);
			for(int l=a;l<=A;l++)dp[i+1][t][l-a]+=dp[i][k][l];
		}
		if(t>>j&1)
		{
			for(int a=0;a<=A;a++)
			{
				dp[i][k|1<<j][a]+=dp[i][k][a];
				if(a&&t>>j+1&1)dp[i][k|3<<j][a-1]+=dp[i][k][a];
			}
		}
	}
	cout<<dp[H][0][0]<<endl;
}
#include<bits/stdc++.h>
using namespace std;
#define ll long long

void recursive(vector<vector<int>>& arr, int h, int w, int& ans,int a_count, int a)
{

    if(a==a_count)
    {
        ans++;
        return;
    }
    if(a_count<a){
        for(int i=0;i<h;i++)
        {
            for(int j=0;j<w-1;j++)
            {
                if(arr[i][j] == 0 && arr[i][j+1]==0)
                {

                    arr[i][j] = 1;
                    arr[i][j+1] = 1;
                    recursive(arr, h, w, ans , a_count+1,a);
                    arr[i][j] = 0;
                    arr[i][j+1] = 0;
                }
            }
        }


        for(int i=0;i<h-1;i++)
        {
            for(int j=0;j<w;j++)
            {
                if(arr[i][j] == 0 && arr[i+1][j]==0)
                {
                    arr[i][j] = 1;
                    arr[i+1][j] = 1;
                    recursive(arr, h, w, ans , a_count+1, a);
                    arr[i][j] = 0;
                    arr[i+1][j] = 0;
                }
            }
        }
    }


}


int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int h,w,a,b;
    int ans=0;
    cin>>h>>w>>a>>b;
    vector<vector<int>> arr(h, vector<int>(w,0));
    recursive(arr, h, w, ans , 0, a);
    long fact=1;
    for(int i = 1; i <=a ; ++i){
        fact*=i;
    }
    cout<<ans/fact;



}

