#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e5 + 10;
const int K = 13;
const int MOD = 1e9 + 7;
int n, k, m;
ll dp[17][K][N];
ll DP(int pos, int taken, int mask) {
  if (taken > k) return 0;
  if (pos < 1) return taken == k;
  ll &ret = dp[mask][taken][pos];
  if (ret != -1) return ret;
  ret = 0;
  int nxt = (mask << 1) & ((1 << m) - 1);
  ret = DP(pos - 1, taken, nxt) + ((ll)(__builtin_popcount(mask) + 1) *
                                   DP(pos - 1, taken + 1, (nxt | 1)) % MOD);
  if (ret >= MOD) ret -= MOD;
  return ret;
}
int main() {
  scanf("%d %d %d", &n, &k, &m);
  memset(dp, -1, sizeof dp);
  printf("%lld\n", DP(n, 0, 0));
  return 0;
}
