#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
void add(int& a, long long b) {
  a += b % mod;
  if (a >= mod) a -= mod;
}
int main() {
  int n, k, m;
  cin >> n >> k >> m;
  vector<vector<vector<int>>> dp(
      n + 1, vector<vector<int>>(k + 1, vector<int>(1 << m)));
  dp[0][0][0] = 1;
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j <= k; ++j) {
      for (int mask = 0; mask < (1 << m); ++mask) {
        int new_mask = (mask << 1) & ((1 << m) - 1);
        add(dp[i + 1][j][new_mask], dp[i][j][mask]);
        if (j + 1 <= k) {
          add(dp[i + 1][j + 1][new_mask | 1],
              (1 + __builtin_popcount(mask)) * 1ll * dp[i][j][mask]);
        }
      }
    }
  }
  int ans = 0;
  for (int mask = 0; mask < (1 << m); ++mask) {
    add(ans, dp[n][k][mask]);
  }
  printf("%d\n", ans);
}
