#include <bits/stdc++.h>
using namespace std;
using ll = long long ;
const int N = 1e5 + 50;
const ll p = 999911659;
ll fac[N];
ll divfac[N];
ll ksm(ll a,ll b,ll p) {
ll ret = 1;
while (b) {
if (b & 1) ret = ret * a % p;
a = a * a % p ;
b >>= 1;
}
return ret % p;
}
ll getc(ll a,ll b) {
if (b > a) return 0;
return fac[a] * divfac[b] % p * divfac[a - b] % p;
}
ll lucas(ll a,ll b) {
if (b == 0) return 1;
ll ans = lucas(a/p,b/p) * getc(a%p,b%p) % p;
return ans;
}
int main() {
ll n,g;
cin >> n >> g;
ll psum = (n + 1) % p;
fac[0] = divfac[0] = 1;
for (int i = 1;i <= n; i++) {
fac[i] = fac[i - 1] * i % p;
divfac[i] = divfac[i - 1] * ksm(i,p - 2,p);
}
for (int i = 2;i <= n / i; i++) {
if (n % i == 0) {
psum = (psum + lucas(n,i) ) % p;
if (i != n / i) psum = (psum + lucas(n,n / i) ) % p;
}
}
cout << ksm(g,psum,p);
return 0;
}