#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#include<set>
#include<functional>
#include<queue>
using namespace std;
#define int long long
int mod;
int Mod(int x){return (x%mod+mod)%mod;}
int qmi(int a,int b){int res=1;while(b){if(b&1)res=res*a%mod;a=a*a%mod;b>>=1;}return res%mod;}
int get_oula(int x)
{
int res=x;
for(int i=2;i<=x/i;i++)
{
if(x%i==0)
{
res=res/i*(i-1);
while(x%i==0)x/=i;
}
}
if(x>1)res=res/x*(x-1);
return res;
}
void solve()
{
int x,p;
string s;
cin>>x>>p>>s;
mod=p;
x%=p;
int phi=get_oula(p);
int t=0;
bool f=false;
for(int i=0;i<s.size();i++)
{
t=t*10+s[i]-'0';
if(t>=phi)t%=phi,f=true;
}
if(t>=phi)f=true,t%=phi;
if(f)t+=phi;
cout<<qmi(x,t)<<'\n';
}
signed main()
{
int T;T=1;
while(T--)solve();
}