#include<iostream>
#include<cstdio>
using namespace std;
//分治快速幂
/*unsigned long long fast(unsigned long long a,unsigned long long n,unsigned long long p){
if(n==0) return 1%p;
if(n==1) return a%p;
unsigned long long s=fast(a,n/2,p);
s=(s*s)%p;
if(n%2==1) s=(s*a)%p;
return s;
}*/
unsigned long long fast(unsigned long long a,unsigned long long n,unsigned long long p){
unsigned long long s=1%p;
while(n){
if(n&1) s=(s*a)%p;
a=(a*a)%p;
n>>=1;
}
return s;
}
int main(){
/*while(n){//二进制反序输出
cout<<n%2;
n/=2;
}*/
/*int n;
scanf("%d",&n);
int i=0;
while(n){
if(n%2==1) printf("%d ",1<<i);
i++;
n/=2;
}*/
//位运算:比+-*/都要快
/*
n&1:取n的二进制末位,相当于n%2;
n>>1:右移1位,相当于n/2;
n<<1:左移1位,相当于n*2;
1<<k;相当于2^k;
a*10=a*(8+2)=a<<3+a<<1;
*/
/*(a+b)%p=(a%p+b%p)%p=(a%p+b)%p;
(a*b)%p=(a%p*b%p)%p=(a%p*b)%p;
(a-p)%p=(a%p-b%p+p)%p;·
(a^n)%p=(...(((a%p)*a)%p)*a)%p:
s=1;
for(int i=0;i<n;i++) s=(s*a)%p;*/
//快速幂:a^n 若n<=1e7,用上述方式暴力求解即可
//若n>1e7 如1e9,1e13等,需要用到快速幂:a^n求数的n次方,A^n求矩阵的n次方
//暴力方式:
/*long long b,p,k,s=1;
scanf("%lld%lld%lld",&b,&p,&k);
for(long long i=0;i<p;i++) s=(s*b)%k;
printf("%lld^%lld mod %lld=%lld",b,p,k,s);*/
//快速幂求2^19:
/*a*a=a^2;
a^2*a^2=a^4;
a^4*a^4=a^8;
a^8*a=a^9;
a^19=a^9*a^9*a;
比for(int i=1;i<=19;i++) ans*=2;要快.*/
//求a^n的值:
/*s=a^(n/2);
s*=s;
if(n&1) s*=a; */
//倍增快速幂:
unsigned long long a,n,p,s;
cin>>a>>p>>n;
cout<<fast(a,n,p)<<endl;
return 0;
}