#include using namespace std; long long mod=1e9+7; long long count(long long i,long long d) { if(i<1)return 0; else if(i==1)return d; else return d+count(i-1,d)*(d+1); } long long pow(long long a,long long b) { return b?pow(a*a%mod,b/2)*(b%2?a:1)%mod:1; } long long sum(long long i,long long d) { return((d+1)*(pow(d+1,i)+mod-1)%mod*pow(d,mod-2)%mod-i+mod)%mod*pow(d,mod-2)%mod*d%mod; } long long sum_n(long long i,long long d,long long n) { if(n==0)return 0; long long s=count(i-1,d); return (n/(s+1)*(sum(i-1,d)+i)%mod+sum_n(i-1,d,n-n/(s+1)*(s+1)))%mod; } main() { long long n,b,d; cin>>n>>b>>d; for(long long i=1;;i++) { if(count(i,d)>n) { cout<<(sum(b,d)+mod-sum_n(i,d,n))%mod<