#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
const int M = 1e9 + 7;
__int128 powmod(__int128 e, __int128 p) {
if (p == 0) {
return 1;
}
__int128 a = 1;
while (p > 1) {
if (p % 2 == 0) {
e = (e * e) % M;
p /= 2;
} else {
a = (a * e) % M;
e = (e * e) % M;
p = (p - 1) / 2;
}
}
return (a * e) % M;
}
int main() {
int n, k;
cin >> n >> k;
__int128 x = 0;
for (int i = 1; i <= n; i++) {
__int128 t = powmod(k, __gcd(i, n));
x += t % M;
}
cout << (int)(((double)1 / n) * x) % M;
return 0;
}
ICAgI2luY2x1ZGUgPGNtYXRoPgogICAgI2luY2x1ZGUgPGNzdGRpbz4KICAgICNpbmNsdWRlIDx2ZWN0b3I+CiAgICAjaW5jbHVkZSA8aW9zdHJlYW0+CiAgICAjaW5jbHVkZSA8YWxnb3JpdGhtPgogICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKICAgIGNvbnN0IGludCBNID0gMWU5ICsgNzsKICAgIAogICAgX19pbnQxMjggcG93bW9kKF9faW50MTI4IGUsIF9faW50MTI4IHApIHsKICAgICAgaWYgKHAgPT0gMCkgewogICAgICAgIHJldHVybiAxOwogICAgICB9CiAgICAgIF9faW50MTI4IGEgPSAxOwogICAgICB3aGlsZSAocCA+IDEpIHsKICAgICAgICBpZiAocCAlIDIgPT0gMCkgewogICAgICAgICAgZSA9IChlICogZSkgJSBNOwogICAgICAgICAgcCAvPSAyOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBhID0gKGEgKiBlKSAlIE07CiAgICAgICAgICBlID0gKGUgKiBlKSAlIE07CiAgICAgICAgICBwID0gKHAgLSAxKSAvIDI7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiAoYSAqIGUpICUgTTsKICAgIH0KICAgIAogICAgaW50IG1haW4oKSB7CiAgICAgIGludCBuLCBrOwogICAgICBjaW4gPj4gbiA+PiBrOwogICAgCiAgICAgIF9faW50MTI4IHggPSAwOwogICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBfX2ludDEyOCB0ID0gcG93bW9kKGssIF9fZ2NkKGksIG4pKTsKICAgICAgICB4ICs9IHQgJSBNOwogICAgICB9CiAgICAgIGNvdXQgPDwgKGludCkoKChkb3VibGUpMSAvIG4pICogeCkgJSBNOwogICAgICByZXR1cm4gMDsKICAgIH0KCg==