#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, sz;
pii Vec[N];
int P[N], A[N];
int isPrime[N], pr[N], eulerPhi[N];
void sieve(int P) { // Sieve & euler
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);
}
}
//GCD = 1
//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);
}
//GCD = Prime
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);
for (int i = 1; i <= sz; i++) {
if (a % Vec[i].ft == 0) { // GCD == Prime
A[i] = calcG(a, n, P[i], getPrTimes(a, Vec[i].ft), Vec[i].sc);
}
else { // GCD = 1
A[i] = calcCoPrime(a, n, P[i]);
}
}
// CRT
int ans = 0;
for (int i = 1; i <= sz; i++) {
ans = (ans + A[i] * POW(m / P[i], eulerPhi[P[i]], m)) % m;
}
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+Owpjb25zdCBpbnQgTiA9IDFlNSArIDU7CmludCBhLCBuLCBtLCBzejsKcGlpIFZlY1tOXTsKCmludCBQW05dLCBBW05dOwppbnQgaXNQcmltZVtOXSwgcHJbTl0sIGV1bGVyUGhpW05dOwp2b2lkIHNpZXZlKGludCBQKSB7IC8vIFNpZXZlICYgZXVsZXIKICAgIGZvciAoaW50IGkgPSAyOyBpIDw9IFA7IGkrKykgZXVsZXJQaGlbaV0gPSBpOwogICAgaXNQcmltZVswXSA9IGlzUHJpbWVbMV0gPSAxOwogICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gUDsgaSsrKSBpZiAoIWlzUHJpbWVbaV0pIHsKICAgICAgICBwcltpXSA9IGk7CiAgICAgICAgZm9yIChpbnQgaiA9IGkgKiBpOyBqIDw9IFA7IGogKz0gaSkgewogICAgICAgICAgICBpc1ByaW1lW2pdID0gMTsKICAgICAgICAgICAgcHJbal0gPSBpOwogICAgICAgIH0KICAgICAgICBmb3IgKGludCBqID0gaTsgaiA8PSBQOyBqICs9IGkpIGV1bGVyUGhpW2pdIC09IGV1bGVyUGhpW2pdIC8gaTsgCiAgICB9Cn0KaW50IFBPVyhpbnQgYSwgaW50IHAsIGludCBNT0QpIHsKICAgIGludCBhbnMgPSAxICUgTU9EOwogICAgYSAlPSBNT0Q7CiAgICBmb3IgKDsgcDsgcCA+Pj0gMSwgYSA9IGEgKiBhICUgTU9EKSBpZiAocCAmIDEpIGFucyA9IGFucyAqIGEgJSBNT0Q7CiAgICByZXR1cm4gYW5zOwp9CmludCBpbnZlcnNlRXVsZXJQaGkoaW50IGEsIGludCBtKSB7CiAgICByZXR1cm4gUE9XKGEsIGV1bGVyUGhpW21dIC0gMSwgbSk7Cn0Kdm9pZCBmYWN0b3IoaW50IG0pIHsKICAgIHdoaWxlKG0gPiAxKSB7CiAgICAgICAgaW50IHAgPSBwclttXSwgY250ID0gMDsKICAgICAgICB3aGlsZShtICUgcCA9PSAwKSB7CiAgICAgICAgICAgIG0gLz0gcDsKICAgICAgICAgICAgY250Kys7CiAgICAgICAgfQogICAgICAgIFZlY1srK3N6XSA9IHtwLCBjbnR9OwogICAgICAgIFBbc3pdID0gUE9XKHAsIGNudCwgTik7IAogICAgfQp9CgovL0dDRCA9IDEKLy9hIF4gz4Yobikg4omhIDEgKE1PRCBuKSB24bubaSAoZ2NkKGEsIG4pID09IDEpCi8vYSBeIEMg4omhIGEgXiAoQyAlICjPhihuKSkpIChNT0Qgbik7CmludCBjYWxjQ29QcmltZShpbnQgYSwgaW50IG4sIGludCBNT0QpIHsKICAgIGlmIChNT0QgPT0gMSkgcmV0dXJuIDA7CiAgICBpZiAobiA9PSAxKSByZXR1cm4gYSAlIE1PRDsKICAgIGludCBwID0gY2FsY0NvUHJpbWUoYSwgbiAtIDEsIGV1bGVyUGhpW01PRF0pOwogICAgcmV0dXJuIFBPVyhhLCBwICsgZXVsZXJQaGlbTU9EXSwgTU9EKTsKfQoKLy9HQ0QgPSBQcmltZQppbnQgZ2V0UHJUaW1lcyhpbnQgYSwgaW50IHApIHsKICAgIGludCBjbnQgPSAwOwogICAgd2hpbGUoYSA+IDEgJiYgYSAlIHAgPT0gMCkgYSAvPSBwLCBjbnQrKzsKICAgIHJldHVybiBjbnQ7Cn0KaW50IGNhbGNHKGludCBhLCBpbnQgbiwgaW50IE1PRCwgaW50IGNudCwgaW50IHRhcikgewogICAgaW50IEMgPSAxOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgaWYgKGNudCAqIEMgPj0gdGFyKSByZXR1cm4gMDsKICAgICAgICBDID0gUE9XKGEsIEMsIE1PRCk7CiAgICB9CiAgICByZXR1cm4gQzsKfQovKgovLyBOaOG6r2MgbOG6oWkgQ1JUOgp4IOKJoSBhMSAobW9kIG0xKQp4IOKJoSBhMiAobW9kIG0yKQouLi4KxJDhurd0IE0gPSBtMSAqIG0yICouLi4gbW4gCuKHkiB4IOKJoSBhMSAqIChNL20xKV7PhihtMSkgKyAuLiArIGFuICogKE0vbW4pXs+GKG1uKSAobW9kIE0pIApIYXkgeCA9ICjiiJFfezEgPD0gaSA8PSBufSBhaSAqIChNL21pKV7PhihtaSkpICUgTQoqLwp2b2lkIHNvbHZlKCkgewogICAgc3ogPSAwOwogICAgZmFjdG9yKG0pOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gc3o7IGkrKykgewogICAgICAgIGlmIChhICUgVmVjW2ldLmZ0ID09IDApIHsgLy8gR0NEID09IFByaW1lCiAgICAgICAgICAgIEFbaV0gPSBjYWxjRyhhLCBuLCBQW2ldLCBnZXRQclRpbWVzKGEsIFZlY1tpXS5mdCksIFZlY1tpXS5zYyk7CiAgICAgICAgfQogICAgICAgIGVsc2UgeyAvLyBHQ0QgPSAxCiAgICAgICAgICAgIEFbaV0gPSBjYWxjQ29QcmltZShhLCBuLCBQW2ldKTsKICAgICAgICB9CiAgICB9CgogICAgLy8gQ1JUCiAgICBpbnQgYW5zID0gMDsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHN6OyBpKyspIHsKICAgICAgICBhbnMgPSAoYW5zICsgQVtpXSAqIFBPVyhtIC8gUFtpXSwgZXVsZXJQaGlbUFtpXV0sIG0pKSAlIG07CiAgICB9CiAgICBjb3V0IDw8IGFucyA8PCAiXG4iOwp9CnNpZ25lZCBtYWluKCkgewogICAgY2luLnRpZShOVUxMKS0+c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGlmKGlmc3RyZWFtKCJURVRSQVRJT04uaW5wIikpIHsKICAgICAgICBmcmVvcGVuKCJURVRSQVRJT04uaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbigiVEVUUkFUSU9OLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIHNpZXZlKDFlNSk7CiAgICB3aGlsZShjaW4gPj4gYSA+PiBuID4+IG0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgcmV0dXJuIDA7Cn0=