#include using lint=long long; lint mod=1'000'000'007; void add_assign(lint&x,lint y){x+=y;if(mod<=x)x-=mod;} int main(){ std::cin.tie(nullptr);std::ios_base::sync_with_stdio(false); std::cout.setf(std::ios_base::fixed);std::cout.precision(15); lint n,d,K;std::cin>>n>>d>>K; std::vectordp(K+1); dp.at(0)=1; while(n--){ for(lint i=K;i>=0;i--){ for(lint j=1;j<=d&&i+j<=K;j++){ add_assign(dp.at(i+j),dp.at(i)); } dp.at(i)=0; } } std::cout<