#include using namespace std; const long long mod=1e9+7; long long count(long long i,long long d) { long long ans=0; for(long long j=1;j<=i;j++) { ans=d+ans*(d+1); } return ans; } 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) { long long a=d+1; return(a*(pow(a,i)+mod-1)%mod*pow(d,mod-2)%mod-i+mod)%mod*pow(d,mod-2)%mod*d%mod; } long long sumx(long long i,long long d) { long long ans=0; for(long long j=1;j<=i;j++) { ans=(j*d%mod+ans*(d+1)%mod)%mod; } return ans; } long long sumcount(long long i,long long d,long long n) { if(n==0)return 0; long long s=count(i-1,d),t=sum(i-1,d); long long now=n/(s+1)*(t+i)%mod; n-=n/(s+1)*(s+1); now=(now+sumcount(i-1,d,n))%mod; return now; } 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-sumcount(i,d,n))%mod<