#include using namespace std; #define int long long typedef vectorvint; typedef pairpint; typedef vectorvpint; #define rep(i,n) for(int i=0;i<(n);i++) #define reps(i,f,n) for(int i=(f);i<(n);i++) #define all(v) (v).begin(),(v).end() #define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();it++) #define pb push_back #define fi first #define se second templateinline void chmin(A &a,B b){if(a>b)a=b;} templateinline void chmax(A &a,B b){if(a>=1; } return ret; } int fact[3333333]; int inv[3333333]; int C(int n,int k){ return fact[n]*inv[k]%mod*inv[n-k]%mod; } int H(int n,int k){ return C(k+n-1,n-1); } signed main(){ fact[0]=1; for(int i=1;i<3333333;i++)fact[i]=fact[i-1]*i%mod; inv[3333333-1]=mpow(fact[3333333-1],mod-2); for(int i=3333333-2;i>=0;i--)inv[i]=inv[i+1]*(i+1)%mod; int N,K,D; cin>>N>>K>>D; int tmp=(N-K)/(K-1)+1; int n=N-tmp*(K-1); if(D==1){ cout<