1 | #include<bits/stdc++.h> |
2 | using namespace std; |
3 | const int MOD=1e9+7; |
4 | int f[10000010]; |
5 | int n,K,L,R; |
6 | int gcd(int x,int y) |
7 | { |
8 | if(y==0) |
9 | { |
10 | return x; |
11 | } |
12 | return gcd(y,x%y); |
13 | } |
14 | int fun(int x,int y) |
15 | { |
16 | int res=1; |
17 | x=x%MOD; |
18 | while(y) |
19 | { |
20 | if(y%2) |
21 | { |
22 | res=1LL*res*x%MOD; |
23 | } |
24 | y/=2; |
25 | x=1LL*x*x%MOD; |
26 | } |
27 | return res; |
28 | } |
29 | int main() |
30 | { |
31 | cin>>n>>K>>L>>R; |
32 | int l=(L+K-1)/K; |
33 | int r=R/K; |
34 | for(int i=r;i>=1;i--) |
35 | { |
36 | int num=r/i-(l-1)/i; |
37 | f[i]=fun(num,n); |
38 | for(int j=i*2;j<=R;j+=i) |
39 | { |
40 | f[i]=(f[i]-f[j]+MOD)%MOD; |
41 | } |
42 | } |
43 | cout<<f[1]; |
44 | return 0; |
45 | } |