#include <iostream>
using namespace std;
long long a,b,p;
long long ksm(long long m){
long long t;
if(m==1 || m==0) return a%p;
t =ksm(m/2) % p;
if(m%2==1) return (t*t*a) % p ;
else return (t*t) % p;
}
int main(){
cin>>a>>b>>p;
cout<<a<<'^'<<b<<" mod "<<p<<'=';
cout<< ksm(b) <<endl;
return 0;
}
为啥数据还是会溢出??