#include #include #include using namespace atcoder; using mint = modint; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf 1000000001 long long get2(long long a,long long n,long long m){ if(n>=31)return -1; if(n==0)return 1LL; long long ret = 1LL; long long nxt = get2(a,n-1,m); if(get2(a,n-1,m)==-1)return -1; rep(i,nxt){ ret *= a; if(ret >= m)return -1; } return ret; } long long get(long long a,long long n,long long m){ if(a==0)return 0; if(a==1)return 1%m; if(m==1)return 0; if(n==0)return 1%m; long long cnt =0; for(int i=1;i<=m;i++){ if(gcd(i,m)==1)cnt++; } if(get2(a,n-1,cnt)!=-1)return get2(a,n,1LL<<62)%m; return pow_mod(a,cnt + get(a,n-1,cnt),m); } int main(){ int A,N,M; cin>>A>>N>>M; cout<