#include<bits/stdc++.h>
using namespace std;

typedef long long  ll;
ll a, b, c;
ll go(ll a, ll b) {
    // 재귀 함수 종료 조건
    if(b == 1) return a % c;
    // 값이 너무 커지므로, 나눈 값을 변수에 담는 방식으로 재귀함수 활용하여 분할 계산
    ll ret = go(a, b / 2);
    // c로 나눈 나머지의 값도 전체 곱에서 계산하는 것이 아니라 매번 곱할 때마다 계산하는 방식으로
    ret = (ret * ret) % c;
    // 2로 나누고 있으니 홀수일 경우 a를 한 번 더 곱한 후 계산해주기
    if(b % 2) ret = (ret * a) % c;
    return ret;

}

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    cin >> a >> b >> c;
    cout << go(a, b) << "\\n";
    return 0;
}