#include<bits/stdc++.h>
using namespace std;
string s1;
long long s2,a[20000001],n,i,x,p;
long long dg(long long a,long long b)
{
if(b==1) return a%s2;
long long t=dg(a,b/2)%s2;
return (((t*t)%s2)*(b%2==0?1:a%s2))%s2;
}
int main()
{
cin>>p;
cin>>s2>>s1;
int len=s1.size();
for(i=0;i<len;++i) a[i]=s1[i]-48;
for(i=0;i<len;++i) x=(x*10+a[i])%s2;
cout<<dg(p,x);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
long long a,m,ans=1;
char c[20000001];
long long ksm(long long x,int y)
{
long long ans=1;
while(y>0)
{
if(y&1)
ans=ans*x%m;
x=x*x%m;
y>>=1;
}
return ans;
}
int main()
{
scanf("%lld%lld",&a,&m);
scanf("%s",c);
int i=strlen(c);
while(i>0)
{
ans=ans*ksm(a,c[--i]^'0')%m;
a=ksm(a,10);
}
printf("%lld\n",ans);
return 0;
}