#include #define int long long #define all(v) v.begin(),v.end() #define rall(v) v.rbegin(),v.rend() using namespace std; templateistream&operator>>(istream&I,vector&v){for(auto&i:v)I>>i;return I;} templateostream&operator<<(ostream&O,vector&v){for(auto&i:v)O<>n>>k>>d; int a=n%(k-1)==0?k-1:n%(k-1),b=(n-a)/(k-1); if(d==1){ cout<> dp(a+1,vector(b+1)),DP(dp); dp[0][0]=1; for(int i=1;i<=a;i++){ int x=0,y=0,z=0; for(int j=0;j<=b;j++){ x=(x+dp[i-1][j])%mod; y=(y+DP[i-1][j])%mod; z=(z*d+dp[i-1][j])%mod; dp[i][j]=x; DP[i][j]=(y+z)%mod; } } cout<>t; while(t--)AC::solve(); }