#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;
}