#include<cstdio>
typedef unsigned long long ll;
ll qkpow(ll a,ll b,ll k);
int main()
{
ll c,d,e,m;
scanf("%lld%lld%lld",&c,&d,&e);
m=qkpow(c,d,e);
printf("%lld^%lld mod %lld=%lld",c,d,e,m);
return 0;
}
ll qkpow(ll a,ll b,ll k) //求a的b次方,k是模数
{
int ans=1,base=a;
while(b>0)
{
if(b%2==1) ans=ans*base%k; //这里要取模,否则可能爆掉
base=base*base%k;
b=b>>1; //b变为原来的一半
}
return ans%k; //最后答案取一次模
}