#include #include #include using namespace std; namespace mp = boost::multiprecision; using Bint = mp::cpp_int; using Real = mp::number>; int main(){ int n , d , k ; cin >> n >> d >> k ; Bint mod = 1000000000 + 7; Bint dp[n+1][k+1] ; for(int i = 0 ; i < n+1 ; i++){ for(int j = 0 ; j < k+1 ; j++){ dp[i][j] = 0; } } dp[0][0] = 1; for(int i = 1 ; i<= n ; i++){ for(int j = 0 ; j < k ; j++){ for(int l = 1 ; l <=d ; l++ ){ if( j+l <= k){ dp[i][j+l] = dp[i][j+l] + dp[i-1][j]; }else{ break; } } } } cout << dp[n][k] % mod << endl; cout << dp[n][k] << endl ; }