#include<iostream>
#include<algorithm>
#include<map>
#include<cstring>
#include<string>
#include<fstream>
#include<unordered_map>
#define all(a) a.begin(), a.end()
#define fr(i, zz, zzz) for (int i = zz; i <= zzz; i++)
#define ll long long
#define pii pair<int, int>
#define frr(i, zz, zzz) for (int i = zz; i >= zzz; i--)
#define full(asdf) memset(asdf, 0, sizeof(asdf))
#define st first
#define nd second
#define IOS ios_base::sync_with_stdio(0);   cin.tie(0); cout.tie(0);
using namespace std;
int n, m, k, a[300], sto[300], sum = 0;
unordered_map <string, bool> mp;
void res(int pos) {
	string s = "";
	fr(i, 1, m) {
		s += to_string(sto[i]) + ' ';
	//	cout << sto[i] << " ";
	}
	if (mp.count(s) == false)
		mp[s] = 1;
}
void Try(int i) {
	fr(j, 1, k) {
		++sto[j];
		sum += j;
		
		if (sum == n)
			res(i);
		else if (sum + 1 < n && i < m)
			Try(i+1);
		sum -= j;
		--sto[j];
	}
}
int main () {
	IOS
	cin >> n >> m >> k;
	Try(1);
	cout << mp.size();
	return 0;
}