#include <bits/stdc++.h>
using namespace std;
const long long N = 100005, M = 1e9 + 7;
long long n, k, ans[N], sum[N], phi[N], b[N / 10], flag[N];
inline long long ksm(long long x, long long y) {
  long long ans = 1;
  for (; y; y >>= 1, x = x * x % M)
    if (y & 1) (ans *= x) %= M;
  return ans;
}
signed main() {
  scanf("%lld%lld", &n, &k);
  phi[1] = 1;
  for (long long i = 2; i <= n; i++) {
    if (!flag[i]) {
      phi[i] = i - 1;
      b[++b[0]] = i;
    }
    for (long long j = 1; j <= b[0] && i * b[j] <= n; j++) {
      long long k = i * b[j];
      flag[k] = 1;
      if (i % b[j] == 0) {
        phi[k] = phi[i] * b[j];
        break;
      } else
        phi[k] = phi[i] * (b[j] - 1);
    }
  }
  for (long long i = 2; i <= n; i++) sum[i] = sum[i - 1] + phi[i];
  for (long long i = 0; i < n; i++) ans[i] = n - i - 1;
  for (long long d = 1; d < n; d++) {
    long long x = (n + d - 1) / d;
    ans[d] += sum[x];
    ans[x * d - n] -= phi[x];
  }
  long long tot = 0, dq = 1;
  for (long long i = 0; i < n; i++) {
    tot = (tot + ans[i] % M * dq) % M;
    dq = dq * k % M;
  }
  printf("%lld\n", tot * ksm(k, M - 1 - n) % M);
}
