#include #include #include #include using namespace std; #define MOD (int)(1e9+7) int solve(int N,int M) { long long cnt = N / M; long long ans = 0; for (int i = 2; i <= cnt; i++) { int x = i; vector>prime; for (int j = 2; j*j <= x; j++) { if (x%j == 0) { int tmp = 0; while (x%j == 0) { x /= j; tmp++; } prime.push_back(make_pair(j, tmp)); } } if (x != 1)prime.push_back(make_pair(x, 1)); long long tmp = 1; for (int i = 0; i < prime.size(); i++)tmp *= (pow(prime[i].first, prime[i].second) - pow(prime[i].first, prime[i].second - 1)); ans += 2*tmp; } ans %= MOD; for (int i = N - 2; i >= 1; i--) { ans *= i; ans %= MOD; } return ans; } int main() { int N, M; cin >> N >> M; cout << solve(N, M) << endl; return 0; }