#include #define rep(i,n) for(int i = 0; i < (n); i++) using namespace std; typedef long long ll; ll modpow(ll a,ll b, ll mod){ ll ans = 1; a %= mod; while(b){ if(b&1) ans = ans * a % mod; a = a * a % mod; b >>= 1; } return ans; } int euler_phi(int n){ int ret = n; for(int i = 2; i * i <= n; i++){ if(n % i == 0){ ret -= ret / i; while(n % i == 0) n /= i; } } if(n > 1) ret -= ret / n; return ret; } int f(int A, int N, int M){ if(A == 1) return 1; if(N == 0) return 1; if(M == 1) return 1; int phi = euler_phi(M); int x = f(A, N - 1, phi); if(x >= phi || x >= 20) return M + modpow(A, x, M); x = pow(A, x); if(x >= M) return (x % M) + M; return x; } int main(){ cin.tie(0); ios::sync_with_stdio(0); int A,N,M; cin >> A >> N >> M; cout << f(A, N, M) % M << endl; }