#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
int films, days, passed;
ll dp[200][200];
ll rec(int days_left, int films_left) {
if(days_left == 0 and films_left == 0) {
return 1;
}
if(days_left == 0) {
return 0;
}
if(dp[days_left][films_left] != -1) {
return dp[days_left][films_left];
}
ll ret = 0;
ll MOD = 1e9 + 7;
ret += (rec(days_left - 1, films_left - 1) % MOD) * (ll) (films - films_left + 1);
ret %= MOD;
ret += rec(days_left - 1, films_left) * max(0LL, (ll) (films_left - passed));
ret %= MOD;
return dp[days_left][films_left] = ret % MOD;
}
int main(){
ios_base::sync_with_stdio(false);
cin >> films >> days >> passed;
memset(dp, -1, sizeof dp);
cout << rec(days, films) << endl;
return 0;
}