#include <bits/stdc++.h> // NeOWami
using namespace std;
#define ft first
#define sc second
#define int long long
using pii = pair<int, int>;
const int N = 1e5 + 5;
int a, n, m;
int sz;
pii Vec[N];
int P[N], A[N];
/*
a ^ P ≡ a (MOD P with P is prime)
a ^ (p - 1) ≡ 1 (MOD P)
a ^ C ≡ a ^ (C % (P - 1)) (MOD P);
a ^ φ(n) ≡ 1 (MOD n) với (gcd(a, n) == 1)
CRT?
cần tính a || n MOD (pi ^ ki) trong ≅ O(n)
*/
int isPrime[N], pr[N], eulerPhi[N];
void sieve(int P) {
for (int i = 2; i <= P; i++) eulerPhi[i] = i;
isPrime[0] = isPrime[1] = 1;
for (int i = 2; i <= P; i++) if (!isPrime[i]) {
pr[i] = i;
for (int j = i * i; j <= P; j += i) {
isPrime[j] = 1;
pr[j] = i;
}
for (int j = i; j <= P; j += i) eulerPhi[j] -= eulerPhi[j] / i;
}
}
int POW(int a, int p, int MOD) {
int ans = 1 % MOD;
a %= MOD;
for (; p; p >>= 1, a = a * a % MOD) if (p & 1) ans = ans * a % MOD;
return ans;
}
int inverseEulerPhi(int a, int m) {
return POW(a, eulerPhi[m] - 1, m);
}
void factor(int m) {
while(m > 1) {
int p = pr[m], cnt = 0;
while(m % p == 0) {
m /= p;
cnt++;
}
Vec[++sz] = {p, cnt};
P[sz] = POW(p, cnt, N);
}
}
//a ^ φ(n) ≡ 1 (MOD n) với (gcd(a, n) == 1)
//a ^ C ≡ a ^ (C % (φ(n))) (MOD n);
int calcCoPrime(int a, int n, int MOD) {
if (MOD == 1) return 0;
if (n == 1) return a % MOD;
int p = calcCoPrime(a, n - 1, eulerPhi[MOD]);
return POW(a, p + eulerPhi[MOD], MOD);
}
int getPrTimes(int a, int p) {
int cnt = 0;
while(a > 1 && a % p == 0) a /= p, cnt++;
return cnt;
}
int calcG(int a, int n, int MOD, int cnt, int tar) {
int C = 1;
for (int i = 1; i <= n; i++) {
if (cnt * C >= tar) return 0;
C = POW(a, C, MOD);
}
return C;
}
/*
// Nhắc lại CRT:
x ≡ a1 (mod m1)
x ≡ a2 (mod m2)
...
Đặt M = m1 * m2 *... mn
⇒ x ≡ a1 * (M/m1)^φ(m1) + .. + an * (M/mn)^φ(mn) (mod M)
Hay x = (∑_{1 <= i <= n} ai * (M/mi)^φ(mi)) % M
*/
void solve() {
sz = 0;
factor(m);
// if (__gcd(a, m) == 1) exit(1);
for (int i = 1; i <= sz; i++) {
if (a % Vec[i].ft == 0) { // GCD == 1
A[i] = calcG(a, n, P[i], getPrTimes(a, Vec[i].ft), Vec[i].sc);
// cerr << "G: " << A[i] << "\n";
}
else { // ELSE
A[i] = calcCoPrime(a, n, P[i]);
// cerr << "C: " << A[i] << "\n";
}
}
// CRY
int ans = 0;
for (int i = 1; i <= sz; i++) {
ans = (ans + A[i] * POW(m / P[i], eulerPhi[P[i]], m)) % m;
// cerr << A[i] << " " << m / P[i] << " " << eulerPhi[P[i]] << " " << m << " -> " << A[i] << " * " << POW(m / P[i], eulerPhi[P[i]], m) << "\n";
}
cout << ans << "\n";
}
signed main() {
cin.tie(NULL)->sync_with_stdio(false);
if(ifstream("TETRATION.inp")) {
freopen("TETRATION.inp", "r", stdin);
freopen("TETRATION.out", "w", stdout);
}
sieve(1e5);
while(cin >> a >> n >> m) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IC8vIE5lT1dhbWkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZnQgZmlyc3QKI2RlZmluZSBzYyBzZWNvbmQKI2RlZmluZSBpbnQgbG9uZyBsb25nCnVzaW5nIHBpaSA9IHBhaXI8aW50LCBpbnQ+Owpjb25zdCBpbnQgTiA9IDFlNSArIDU7CmludCBhLCBuLCBtOwppbnQgc3o7CnBpaSBWZWNbTl07CmludCBQW05dLCBBW05dOwovKgphIF4gUCDiiaEgYSAoTU9EIFAgd2l0aCBQIGlzIHByaW1lKQphIF4gKHAgLSAxKSDiiaEgMSAoTU9EIFApCgphIF4gQyDiiaEgYSBeIChDICUgKFAgLSAxKSkgKE1PRCBQKTsKCmEgXiDPhihuKSDiiaEgMSAoTU9EIG4pIHbhu5tpIChnY2QoYSwgbikgPT0gMSkKCkNSVD8KY+G6p24gdMOtbmggYSB8fCBuIE1PRCAocGkgXiBraSkgdHJvbmcg4omFIE8obikKKi8KaW50IGlzUHJpbWVbTl0sIHByW05dLCBldWxlclBoaVtOXTsKdm9pZCBzaWV2ZShpbnQgUCkgewogICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gUDsgaSsrKSBldWxlclBoaVtpXSA9IGk7CiAgICBpc1ByaW1lWzBdID0gaXNQcmltZVsxXSA9IDE7CiAgICBmb3IgKGludCBpID0gMjsgaSA8PSBQOyBpKyspIGlmICghaXNQcmltZVtpXSkgewogICAgICAgIHByW2ldID0gaTsKICAgICAgICBmb3IgKGludCBqID0gaSAqIGk7IGogPD0gUDsgaiArPSBpKSB7CiAgICAgICAgICAgIGlzUHJpbWVbal0gPSAxOwogICAgICAgICAgICBwcltqXSA9IGk7CiAgICAgICAgfQogICAgICAgIGZvciAoaW50IGogPSBpOyBqIDw9IFA7IGogKz0gaSkgZXVsZXJQaGlbal0gLT0gZXVsZXJQaGlbal0gLyBpOyAKICAgIH0KfQppbnQgUE9XKGludCBhLCBpbnQgcCwgaW50IE1PRCkgewogICAgaW50IGFucyA9IDEgJSBNT0Q7CiAgICBhICU9IE1PRDsKICAgIGZvciAoOyBwOyBwID4+PSAxLCBhID0gYSAqIGEgJSBNT0QpIGlmIChwICYgMSkgYW5zID0gYW5zICogYSAlIE1PRDsKICAgIHJldHVybiBhbnM7Cn0KaW50IGludmVyc2VFdWxlclBoaShpbnQgYSwgaW50IG0pIHsKICAgIHJldHVybiBQT1coYSwgZXVsZXJQaGlbbV0gLSAxLCBtKTsKfQp2b2lkIGZhY3RvcihpbnQgbSkgewogICAgd2hpbGUobSA+IDEpIHsKICAgICAgICBpbnQgcCA9IHByW21dLCBjbnQgPSAwOwogICAgICAgIHdoaWxlKG0gJSBwID09IDApIHsKICAgICAgICAgICAgbSAvPSBwOwogICAgICAgICAgICBjbnQrKzsKICAgICAgICB9CiAgICAgICAgVmVjWysrc3pdID0ge3AsIGNudH07CiAgICAgICAgUFtzel0gPSBQT1cocCwgY250LCBOKTsgCiAgICB9Cn0KCi8vYSBeIM+GKG4pIOKJoSAxIChNT0QgbikgduG7m2kgKGdjZChhLCBuKSA9PSAxKQovL2EgXiBDIOKJoSBhIF4gKEMgJSAoz4YobikpKSAoTU9EIG4pOwppbnQgY2FsY0NvUHJpbWUoaW50IGEsIGludCBuLCBpbnQgTU9EKSB7CiAgICBpZiAoTU9EID09IDEpIHJldHVybiAwOwogICAgaWYgKG4gPT0gMSkgcmV0dXJuIGEgJSBNT0Q7CiAgICBpbnQgcCA9IGNhbGNDb1ByaW1lKGEsIG4gLSAxLCBldWxlclBoaVtNT0RdKTsKICAgIHJldHVybiBQT1coYSwgcCArIGV1bGVyUGhpW01PRF0sIE1PRCk7Cn0KaW50IGdldFByVGltZXMoaW50IGEsIGludCBwKSB7CiAgICBpbnQgY250ID0gMDsKICAgIHdoaWxlKGEgPiAxICYmIGEgJSBwID09IDApIGEgLz0gcCwgY250Kys7CiAgICByZXR1cm4gY250Owp9CmludCBjYWxjRyhpbnQgYSwgaW50IG4sIGludCBNT0QsIGludCBjbnQsIGludCB0YXIpIHsKICAgIGludCBDID0gMTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGlmIChjbnQgKiBDID49IHRhcikgcmV0dXJuIDA7CiAgICAgICAgQyA9IFBPVyhhLCBDLCBNT0QpOwogICAgfQogICAgcmV0dXJuIEM7Cn0KLyoKLy8gTmjhuq9jIGzhuqFpIENSVDoKeCDiiaEgYTEgKG1vZCBtMSkKeCDiiaEgYTIgKG1vZCBtMikKLi4uCsSQ4bq3dCBNID0gbTEgKiBtMiAqLi4uIG1uIArih5IgeCDiiaEgYTEgKiAoTS9tMSlez4YobTEpICsgLi4gKyBhbiAqIChNL21uKV7PhihtbikgKG1vZCBNKSAKSGF5IHggPSAo4oiRX3sxIDw9IGkgPD0gbn0gYWkgKiAoTS9taSlez4YobWkpKSAlIE0KKi8Kdm9pZCBzb2x2ZSgpIHsKICAgIHN6ID0gMDsKICAgIGZhY3RvcihtKTsKICAgIC8vIGlmIChfX2djZChhLCBtKSA9PSAxKSBleGl0KDEpOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gc3o7IGkrKykgewogICAgICAgIGlmIChhICUgVmVjW2ldLmZ0ID09IDApIHsgLy8gR0NEID09IDEKICAgICAgICAgICAgQVtpXSA9IGNhbGNHKGEsIG4sIFBbaV0sIGdldFByVGltZXMoYSwgVmVjW2ldLmZ0KSwgVmVjW2ldLnNjKTsKICAgICAgICAgICAgLy8gY2VyciA8PCAiRzogIiA8PCBBW2ldIDw8ICJcbiI7CiAgICAgICAgfQogICAgICAgIGVsc2UgeyAvLyBFTFNFCiAgICAgICAgICAgIEFbaV0gPSBjYWxjQ29QcmltZShhLCBuLCBQW2ldKTsKICAgICAgICAgICAgLy8gY2VyciA8PCAiQzogIiA8PCBBW2ldIDw8ICJcbiI7CiAgICAgICAgfQogICAgfQoKICAgIC8vIENSWQogICAgaW50IGFucyA9IDA7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBzejsgaSsrKSB7CiAgICAgICAgYW5zID0gKGFucyArIEFbaV0gKiBQT1cobSAvIFBbaV0sIGV1bGVyUGhpW1BbaV1dLCBtKSkgJSBtOwogICAgICAgIC8vIGNlcnIgPDwgQVtpXSA8PCAiICIgPDwgbSAvIFBbaV0gPDwgIiAiIDw8IGV1bGVyUGhpW1BbaV1dIDw8ICIgIiA8PCBtIDw8ICIgLT4gIiA8PCBBW2ldIDw8ICIgKiAiIDw8IFBPVyhtIC8gUFtpXSwgZXVsZXJQaGlbUFtpXV0sIG0pIDw8ICJcbiI7CiAgICB9CiAgICBjb3V0IDw8IGFucyA8PCAiXG4iOwp9CnNpZ25lZCBtYWluKCkgewogICAgY2luLnRpZShOVUxMKS0+c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGlmKGlmc3RyZWFtKCJURVRSQVRJT04uaW5wIikpIHsKICAgICAgICBmcmVvcGVuKCJURVRSQVRJT04uaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbigiVEVUUkFUSU9OLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIHNpZXZlKDFlNSk7CiAgICB3aGlsZShjaW4gPj4gYSA+PiBuID4+IG0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgcmV0dXJuIDA7Cn0=